Swing IdentifierThe "Swing Identifier" is a custom Pine Script indicator designed for use in the TradingView platform. It serves to visually identify and mark swing highs and swing lows on a trading chart, which are key concepts in technical analysis. This script is comprehensive and customizable, making it a useful tool for traders looking to pinpoint potential trend reversals and support or resistance areas.
**Key Features of the 'Swing Identifier' Indicator:**
1. **Swing Range Input:**
   - This input determines the number of bars to the left and right of the current bar that the script will examine to identify a swing high or low. A larger value will look for swings over a broader range, potentially identifying more significant swings but at the expense of sensitivity.
2. **Swing Strength Input:**
   - The swing strength is set as a percentage and is used to filter out insignificant price movements. A swing high or low is only considered valid if the percentage change from the last swing is greater than this input value. This feature helps in avoiding false signals in sideways or less volatile markets.
3. **Use Wicks Option:**
   - Users can choose whether to consider the wicks of the candles or just the closing prices in identifying swings. This feature adds flexibility, allowing the script to be tailored to different trading styles and strategies.
4. **Line Color Customization:**
   - The color of the lines marking the swings can be customized, enhancing the visual appeal and readability of the chart.
**Operational Mechanics:**
1. **Identification of Swing Highs and Lows:**
   - The script uses the `ta.pivothigh` and `ta.pivotlow` functions to identify swing highs and lows. Whether it uses the high/low of the candles or their closing prices is determined by the user's choice in the "Use Wicks" option.
2. **Drawing and Updating Lines:**
   - When a new swing high or low is identified, and it meets the percentage change criteria from the previous swing, a line is drawn from the last swing low to the current high (or vice versa). If a new swing high (or low) is identified that is higher (or lower) than the previous one, the old line is deleted, and a new line is drawn.
3. **Swing Update Logic:**
   - The script maintains a toggle mechanism to look alternatively for highs and lows. This ensures that it sequentially identifies a high and then a low (or vice versa), which aligns with how actual market swings behave.
**Usage in Trading:**
1. **Identifying Trend Reversals:**
   - By marking swing highs and lows, the script helps traders identify potential trend reversals. A break of a swing low in an uptrend or a swing high in a downtrend could signal a change in the prevailing trend.
2. **Support and Resistance:**
   - Swing highs and lows often act as levels of support and resistance. Traders can use these levels for setting entry or exit points, stop losses, and take profit orders.
3. **Customization for Strategy:**
   - The customizable nature of the script allows traders to adjust the parameters according to their trading strategy, time frame, and asset volatility.
In summary, the "Swing Identifier" is a versatile and customizable tool that aids in visually identifying crucial price swing points, thereby assisting traders in making informed decisions based on technical analysis principles.
Поиск скриптов по запросу "high low"
Modified Box Plots
Box Plot Concept: The script creates a modified box plot where the central box represents the range within 1 standard deviation from the midpoint (hl2), which is the average of the high and low prices. The whiskers extend to cover a range of 3 standard deviations, providing a visualization of the overall price distribution.
Color Scheme: The color of the modified box plot is determined based on comparisons between the current midpoint (g) and the +/- 1 SD values of the previous candle (i  and j ). If g > i , the color is green; if g < j , it's red; otherwise, it's yellow. This color scheme allows users to quickly assess the relationship between the current market conditions and recent price movements. if the mid point price is above/below +/- 1 SD values of the previous candle the price movement is considered as significant. 
Plotcandle Function: The plotcandle function is employed to visualize the modified box plot. The color of the box is dynamically determined by the candleColor variable, which reflects the current market state based on the color scheme. The wicks, represented by lines extending from the box, are colored in white.
Explanation of Box and Wicks:
Box (Open and Close): In this modified box plot, the box does not represent traditional open and close prices. Instead, it signifies a range within 1 standard deviation of the midpoint (hl2), providing insight into the typical price variation around the average of the high and low.
Wicks (High and Low): The wicks extend from the box to cover a range of 3 standard deviations from the midpoint (hl2). They do not correspond to the actual high and low prices but serve as a visualization of potential outliers in the price distribution. The actual high and low prices are also plotted as green and red dots when the actual high and low prices fall outside the +/- 3SD wicks (whiskers) and also indicate the prices does not fit the distribution based on the recent price volatility.
In summary, this modified box plot offers a unique perspective on price distribution by considering standard deviations from the midpoint. The color scheme aids in quickly assessing market conditions, and the wicks provide insights into the potential presence of outliers. It's essential to understand that the box and wicks do not represent traditional open, close, high, and low prices but offer a different way to visualize and interpret intraday price movements.
Step by step explanation 
Here's the step-by-step explanation:
a = ta.highest(high, 7): Calculates the highest high in the last 7 bars.
b = ta.lowest(low, 7): Calculates the lowest low in the last 7 bars.
c = ta.stdev(hl2, 7): Calculates the standard deviation of the average of high and low prices (hl2) over the last 7 bars.
d = (a - b) / c: Computes a scaling factor d based on the highest, lowest, and standard deviation. This factor is used to scale the intraday range in the next steps.
e = (high - low): Calculates the intraday range of the candle.
f = e / d: Estimates the standard deviation (f) of the intraday candle price using the scaling factor d.
g = hl2: Defines the intraday midpoint of the candle, which is the average of high and low prices.
i = g + 1 * f, j = g - 1 * f, k = g + 3 * f, l = g - 3 * f: Calculate values representing coverage of +1 SD, -1 SD, +3 SD, and -3 SD from the intraday midpoint.
The script utilizes historical high, low, and standard deviation values to dynamically estimate the standard deviation of the intraday candle, providing a measure of volatility for the current price range. This estimation is then used to construct a modified box plot around the intraday midpoint. 
In addition I have included a 7 period hull moving average just to see the overall trend direction.
Conclusion:
The "Nasan Modified Box Plots" indicator on TradingView is a dynamic visualization tool that provides insights into the distribution of price ranges over a specified period. It adapts to changing market conditions by incorporating historical data in the calculation of a scaling factor (d). The indicator constructs a modified box plot, where the size of the box and the whiskers is determined by recent volatility
Scoopy StacksWaffle Around Multiple 
(Open, High, Low, Close) Stacks On 
Pre/Post Market & (Daily, Weekly, 
Monthly, Yearly) Sessions With 
Meticulous Columns, Rows, Tooltips, 
Colors, Custom Ideas, and Alerts.
Sessions Use Two Step Incremental Values 
Default Value: (1) Shows Two Previous 
(O, H, L, C); Increasing Value Swaps 
Sessions With Next Two Stacks.
⬛️  KEY WORDS: 
🟢 Crossover | 🔴 Crossunder 
📗 High | 📕 Low 
📔 Open | 📓 Close 
🥇 First Idea | 🥈 Second Idea 
🥉 Third Idea | 🎖️ Fourth Idea
🟥  ALERTS: 
Default Option: (Per Bar) 
Alerts Once Conditions Are Met 
(Bar Close) Alerts When Bar Closes
Default Option: (Reg) 
Alerts During Regular Market 
Trading Hours, (0930-1600) 
(Ext) Alerts During Extended 
Market Hours, (1600-0930) 
(24/7) Alerts All Day
Optional Preferences: 
Regular Alerts - Stocks 
Extended Alerts - Futures 
24/7 Alerts - Crypto
🟧  STACKS:  
Default Value: (1) 
Incremental Stack Value, Increasing Value 
Swaps Sessions With the Next Two Stacks
(✓) Swap Stacks? 
Pre/Post Market High/Lows, 
1-2 Day High/Lows, 1-2 Week High/Lows, 
1-2 Month High/Lows, 1-2 Year High/Lows
  
(   ) Swap Stacks? 
Pre/Post Market Open/Close, 
1-2 Day Open/Close, 1-2 Week Open/Close, 
1-2 Month Open/Close, 1-2 Year Open/Close
  
🟨  EXAMPLES: 
Default Stack: 
🟢 | 📗 Pre Market High (PRE) | 4600.00 
🔴 | 📕 Post Market Low (POST) | 420.00 
Optional: (Open) 
🟢 | 📔 Post Market Open (POST) | 4400.00 
Optional: (Close) 
🔴 | 📓 Pre Market Close (PRE) | 430.00
  
  
Default Stack Value: (1) 
🔴 | 📗 1 Day High (1DH) | 460.00 
Next Stack Value: (3) 
🟢 | 📕 4 Day Low (4DL) | 420.00 
Optional: (Open) 
🔴 | 📔 2 Day Open (2DO) | 440.00 
Optional: (Close) 
🟢 | 📓 3 Day Close (3DC) | 430.00
  
  
Default Stack Value: (5) 
🟢 | 📗 5 Week High (5WH) | 460.00 
Next Stack Value: (7) 
🔴 | 📕 8 Week Low (8WL) | 420.00 
Optional: (Open) 
🔴 | 📔 7 Week Open (7WO) | 4400.00 
Optional: (Close) 
🟢 | 📓 6 Week Close (6WC) | 430.00
  
  
Default Stack Value: (9) 
🔴 | 📗 9 Month High (9MH) | 460.00 
Next Stack Value: (11) 
🟢 | 📕 12 Month Low (12ML) | 420.00 
Optional: (Open) 
🟢 | 📔 11 Month Open (11MO) | 4400.00 
Optional: (Close) 
🔴 | 📓 10 Month Close (10MC) | 430.00
  
  
Default Stack Value: (13) 
🟢 | 📗 13 Year High (13YH) | 460.00 
Next Stack Value: (15) 
🟢 | 📕 16 Year Low (16YL) | 420.00 
Optional: (Open) 
🔴 | 📔 15 Year Open (15YO) | 4400.00 
Optional: (Close) 
🔴 | 📓 14 Year Close (14YC) | 430.00
  
  
🟩  TABLES:  
Default Value: (1) 
Moves Table Up, Down, Left, or Right 
Based on Second Default Value
First Default Value: (Top Right) 
Sets Table Placement, Middle Center 
Allows Table To Move In All Directions
  
Second Default Value: (Default) 
Fixed Table Position, Switching Values 
Moves Direction of the Table
  
🟦  IDEAS: 
(✓) Show Ideas? 
Shows Four Ideas With Custom Texts 
and Values; Ideas Are Based Around 
Post-It Note Reminders with Alerts
Suggestions For Text Ideas: 
Take Profit, Stop Loss, Trim, Hold, 
Long, Short, Bounce Spot, Retest, 
Chop, Support, Resistance, Buy, Sell
🟪  EXAMPLES: 
Default Value: (5) 
Shows the Custom Table Value For 
Sorted Table Positions and Alerts
Default Text: (🥇) 
Shown On First Table Cell and 
Message Appearing On Alerts 
Alert Shows: 🟢 | 🥇 | 5.00
  
  
Default Value: (10) 
Shows the Custom Table Value For 
Sorted Table Positions and Alerts
Default Text: (🥈) 
Shown On Second Table Cell and 
Message Appearing On Alerts
Alert Shows: 🔴 | 🥈 | 10.00
  
  
Default Value: (50) 
Shows the Custom Table Value For 
Sorted Table Positions and Alerts
Default Text: (🥉) 
Shown On Third Table Cell and 
Message Appearing On Alerts 
Alert Shows: 🟢 | 🥉 | 50.00
  
  
Default Value: (100) 
Shows the Custom Table Value For 
Sorted Table Positions and Alerts
Default Text: (🎖️) 
Shown On Fourth Table Cell and 
Message Appearing On Alerts 
Alert Shows: 🔴 | 🎖️ | 100.00
  
  
⬛️  REFERENCES: 
Pre-market Highs & Lows on regular 
trading hours (RTH) chart 
By Twingall
Previous Day Week Highs & Lows 
By Sbtnc
Screener for 40+ instruments 
By QuantNomad
Daily Weekly Monthly Yearly Opens 
By Meliksah55
Ribbit RangesBounce Around Multiple 
(Open, High, Low, Close) Ranges 
On Pre/Post Market & (Daily, Weekly, 
Monthly, Yearly) Sessions With 
Meticulous Lines, Labels, Tooltips, 
Colors, Custom Ideas, and Alerts.
Sessions Use Two Step Incremental Values 
Default Value: (1) Shows Two Previous 
(O, H, L, C); Increasing Value Swaps 
Sessions With Next Two Ranges.
⬛️  KEY WORDS: 
🟢 Crossover | 🔴 Crossunder 
📗 High | 📕 Low 
📔 Open | 📓 Close 
🥇 First Idea | 🥈 Second Idea 
🥉 Third Idea | 🎖️ Fourth Idea
🟥  ALERTS: 
Default Option: (Per Bar) 
Alerts Once Conditions Are Met 
(Bar Close) Alerts When Bar Closes
Default Option: (Reg) 
Alerts During Regular Market 
Trading Hours, (0930-1600) 
(Ext) Alerts During Extended 
Market Hours, (1600-0930) 
(24/7) Alerts All Day
Optional Preferences: 
Regular Alerts - Stocks 
Extended Alerts - Futures 
24/7 Alerts - Crypto
🟧  RANGES: 
Default Value: (1) 
Incremental Range Value, Increasing Value 
Swaps Sessions With the Next Two Ranges
(✓) Swap Ranges? 
Pre/Post Market High/Lows, 
1-2 Day High/Lows, 1-2 Week High/Lows, 
1-2 Month High/Lows, 1-2 Year High/Lows
  
(   ) Swap Ranges? 
Pre/Post Market Open/Close, 
1-2 Day Open/Close, 1-2 Week Open/Close, 
1-2 Month Open/Close, 1-2 Year Open/Close
  
🟨  EXAMPLES: 
Default Range: 
🟢 | 📗 Pre Market High (PRE) | 4600.00 
🔴 | 📕 Post Market Low (POST) | 420.00 
Optional: (Open) 
🟢 | 📔 Post Market Open (POST) | 4400.00 
Optional: (Close) 
🔴 | 📓 Pre Market Close (PRE) | 430.00
  
  
Default Range Value: (1) 
🔴 | 📗 1 Day High (1DH) | 460.00 
Next Range Value: (3) 
🟢 | 📕 4 Day Low (4DL) | 420.00 
Optional: (Open) 
🔴 | 📔 2 Day Open (2DO) | 440.00 
Optional: (Close) 
🟢 | 📓 3 Day Close (3DC) | 430.00
  
  
Default Range Value: (5) 
🟢 | 📗 5 Week High (5WH) | 460.00 
Next Range Value: (7) 
🔴 | 📕 8 Week Low (8WL) | 420.00 
Optional: (Open) 
🔴 | 📔 7 Week Open (7WO) | 4400.00 
Optional: (Close) 
🟢 | 📓 6 Week Close (6WC) | 430.00
  
  
Default Range Value: (9) 
🔴 | 📗 9 Month High (9MH) | 460.00 
Next Range Value: (11) 
🟢 | 📕 12 Month Low (12ML) | 420.00 
Optional: (Open) 
🟢 | 📔 11 Month Open (11MO) | 4400.00 
Optional: (Close) 
🔴 | 📓 10 Month Close (10MC) | 430.00
  
  
Default Range Value: (13) 
🟢 | 📗 13 Year High (13YH) | 460.00 
Next Range Value: (15) 
🟢 | 📕 16 Year Low (16YL) | 420.00 
Optional: (Open) 
🔴 | 📔 15 Year Open (15YO) | 4400.00 
Optional: (Close) 
🔴 | 📓 14 Year Close (14YC) | 430.00
  
  
🟩  COLORS: 
(✓) Swap Colors? 
Text Color Is Shown Using 
Background Color
  
(   ) Swap Colors? 
Background Color Is Shown 
Using Text Color
  
🟦  IDEAS: 
(✓) Show Ideas? 
Plots Four Ideas With Custom Lines 
and Labels; Ideas Are Based Around 
Post-It Note Reminders with Alerts
Suggestions For Text Ideas: 
Take Profit, Stop Loss, Trim, Hold, 
Long, Short, Bounce Spot, Retest, 
Chop, Support, Resistance, Buy, Sell
🟪  EXAMPLES: 
Default Value: (5) 
Shows the Custom Value For 
Lines, Labels, and Alerts
Default Text: (🥇) 
Shown On First Label and 
Message Appearing On Alerts 
Alert Shows: 🟢 | 🥇 | 5.00
  
  
Default Value: (10) 
Shows the Custom Value For 
Lines, Labels, and Alerts
Default Text: (🥈) 
Shown On Second Label and 
Message Appearing On Alerts 
Alert Shows: 🔴 | 🥈 | 10.00
  
  
Default Value: (50) 
Shows the Custom Value For 
Lines, Labels, and Alerts
Default Text: (🥉) 
Shown On Third Label and 
Message Appearing On Alerts 
Alert Shows: 🟢 | 🥉 | 50.00
  
  
Default Value: (100) 
Shows the Custom Value For 
Lines, Labels, and Alerts
Default Text: (🎖️) 
Shown On Fourth Label and 
Message Appearing On Alerts 
Alert Shows: 🔴 | 🎖️ | 100.00
  
  
⬛️  REFERENCES: 
Pre-market Highs & Lows on regular 
trading hours (RTH) chart 
By Twingall
Previous Day Week Highs & Lows 
By Sbtnc
Screener for 40+ instruments 
By QuantNomad
Daily Weekly Monthly Yearly Opens 
By Meliksah55
Z-Score Based Momentum Zones with Advanced Volatility ChannelsThe indicator  "Z-Score Based Momentum Zones with Advanced Volatility Channels" combines various technical analysis components, including volatility, price changes, and volume correction, to calculate Z-Scores and determine momentum zones and provide a visual representation of price movements and volatility based on multi timeframe highest high and lowest low values. 
Note: THIS IS A IMPROVEMNT OF "Multi Time Frame Composite Bands" INDICATOR OF MINE WITH MORE EMPHASIS ON MOMENTUM ZONES CALULATED BASED ON Z-SCORES
Input Options
look_back_length: This input specifies the look-back period for calculating intraday volatility. correction It is set to a default value of 5.
lookback_period: This input sets the look-back period for calculating relative price change. The default value is 5.
zscore_period: This input determines the look-back period for calculating the Z-Score. The default value is 500.
avgZscore_length: This input defines the length of the momentum block used in calculations, with a default value of 14.
include_vc: This is a boolean input that, if set to true, enables volume correction in the calculations. By default, it is set to false.
1. Volatility Bands (Composite High and Low):
Composite High and Low: These are calculated by combining different moving averages of the high prices (high) and low prices (low). Specifically:
a_high and a_low are calculated as the average of the highest (ta.highest) and lowest (ta.lowest) high and low prices over various look-back periods (5, 8, 13, 21, 34) to capture short and long-term trends.
b_high and b_low are calculated as the simple moving average (SMA) of the high and low prices over different look-back periods (5, 8, 13) to smooth out the trends.
high_c and low_c are obtained by averaging a_high with b_high and a_low with b_low respectively.
IDV Correction Calulation : In this script the Intraday Volatility (IDV) is calculated as the simple moving average (SMA) of the daily high-low price range divided by the closing price. This measures how much the price fluctuates in a given period.
Composite High and Low with Volatility: The final c_high and c_low values are obtained by adjusting high_c and low_c with the calculated intraday volatility (IDV). These values are used to create the "Composite High" and "Composite Low" plots.
Composite High and Low with Volatility Correction: The final c_high and c_low values are obtained by adjusting high_c and low_c with the calculated intraday volatility (IDV). These values are used to create the "Composite High" and "Composite Low" plots.
2. Momentum Blocks Based on Z-Score:
Relative Price Change (RPC):
The Relative Price Change (rpdev) is calculated as the difference between the current high-low-close average (hlc3) and the previous simple moving average (psma_hlc3) of the same quantity. This measures the change in price over time.
Additionally, std_hlc3 is calculated as the standard deviation of the hlc3 values over a specified look-back period. The standard deviation quantifies the dispersion or volatility in the price data.
The rpdev is then divided by the std_hlc3 to normalize the price change by the volatility. This normalization ensures that the price change is expressed in terms of standard deviations, which is a common practice in quantitative analysis.
Essentially, the rpdev represents how many standard deviations the current price is away from the previous moving average. 
Volume Correction (VC): If the include_vc input is set to true, volume correction is applied by dividing the trading volume by the previous simple moving average of the volume (psma_volume). This accounts for changes in trading activity.
Volume Corrected Relative Price Change (VCRPD): The vcrpd is calculated by multiplying the rpdev by the volume correction factor (vc). This incorporates both price changes and volume data.
Z-Scores: The Z-scores are calculated by taking the difference between the vcrpd and the mean (mean_vcrpd) and then dividing it by the standard deviation (stddev_vcrpd). Z-scores measure how many standard deviations a value is away from the mean. They help identify whether a value is unusually high or low compared to its historical distribution.
Momentum Blocks: The "Momentum Blocks" are essentially derived from the Z-scores (avgZScore). The script assigns different colors to the "Fill Area" based on predefined Z-score ranges. These colored areas represent different momentum zones:
Positive Z-scores indicate bullish momentum, and different shades of green are used to fill the area.
Negative Z-scores indicate bearish momentum, and different shades of red are used.
Z-scores near zero (between -0.25 and 0.25) suggest neutrality, and a yellow color is used.
CNTLibraryLibrary   "CNTLibrary" 
Custom Functions To Help Code In Pinescript V5
Coded By Christian Nataliano
First Coded In 10/06/2023
Last Edited In 22/06/2023
Huge Shout Out To © ZenAndTheArtOfTrading and his ZenLibrary V5, Some Of The Custom Functions Were Heavily Inspired By Matt's Work & His Pine Script Mastery Course
Another Shout Out To The TradingView's Team Library ta V5 
//====================================================================================================================================================
//  Custom Indicator Functions 
//====================================================================================================================================================
 GetKAMA(KAMA_lenght, Fast_KAMA, Slow_KAMA) 
  Calculates An Adaptive Moving Average Based On Perry J Kaufman's Calculations
  Parameters:
     KAMA_lenght (int) : Is The KAMA Lenght
     Fast_KAMA (int) : Is The KAMA's Fastes Moving Average
     Slow_KAMA (int) : Is The KAMA's Slowest Moving Average
  Returns: Float Of The KAMA's Current Calculations
 GetMovingAverage(Source, Lenght, Type) 
  Get Custom Moving Averages Values
  Parameters:
     Source (float) : Of The Moving Average, Defval = close
     Lenght (simple int) : Of The Moving Average, Defval = 50
     Type (string) : Of The Moving Average, Defval = Exponential Moving Average
  Returns: The Moving Average Calculation Based On Its Given Source, Lenght & Calculation Type (Please Call Function On Global Scope)
 GetDecimals() 
  Calculates how many decimals are on the quote price of the current market © ZenAndTheArtOfTrading
  Returns: The current decimal places on the market quote price
 Truncate(number, decimalPlaces) 
  Truncates (cuts) excess decimal places © ZenAndTheArtOfTrading
  Parameters:
     number (float) 
     decimalPlaces (simple float) 
  Returns: The given number truncated to the given decimalPlaces
 ToWhole(number) 
  Converts pips into whole numbers © ZenAndTheArtOfTrading
  Parameters:
     number (float) 
  Returns: The converted number
 ToPips(number) 
  Converts whole numbers back into pips © ZenAndTheArtOfTrading
  Parameters:
     number (float) 
  Returns: The converted number
 GetPctChange(value1, value2, lookback) 
  Gets the percentage change between 2 float values over a given lookback period © ZenAndTheArtOfTrading
  Parameters:
     value1 (float) 
     value2 (float) 
     lookback (int) 
 BarsAboveMA(lookback, ma) 
  Counts how many candles are above the MA © ZenAndTheArtOfTrading
  Parameters:
     lookback (int) 
     ma (float) 
  Returns: The bar count of how many recent bars are above the MA
 BarsBelowMA(lookback, ma) 
  Counts how many candles are below the MA © ZenAndTheArtOfTrading
  Parameters:
     lookback (int) 
     ma (float) 
  Returns: The bar count of how many recent bars are below the EMA
 BarsCrossedMA(lookback, ma) 
  Counts how many times the EMA was crossed recently © ZenAndTheArtOfTrading
  Parameters:
     lookback (int) 
     ma (float) 
  Returns: The bar count of how many times price recently crossed the EMA
 GetPullbackBarCount(lookback, direction) 
  Counts how many green & red bars have printed recently (ie. pullback count) © ZenAndTheArtOfTrading
  Parameters:
     lookback (int) 
     direction (int) 
  Returns: The bar count of how many candles have retraced over the given lookback & direction
 GetSwingHigh(Lookback, SwingType) 
  Check If Price Has Made A Recent Swing High
  Parameters:
     Lookback (int) : Is For The Swing High Lookback Period, Defval = 7
     SwingType (int) : Is For The Swing High Type Of Identification, Defval = 1
  Returns: A Bool - True If Price Has Made A Recent Swing High
 GetSwingLow(Lookback, SwingType) 
  Check If Price Has Made A Recent Swing Low
  Parameters:
     Lookback (int) : Is For The Swing Low Lookback Period, Defval = 7
     SwingType (int) : Is For The Swing Low Type Of Identification, Defval = 1
  Returns: A Bool - True If Price Has Made A Recent Swing Low
//====================================================================================================================================================
//  Custom Risk Management Functions 
//====================================================================================================================================================
 CalculateStopLossLevel(OrderType, Entry, StopLoss) 
  Calculate StopLoss Level
  Parameters:
     OrderType (int) : Is To Determine A Long / Short Position, Defval = 1
     Entry (float) : Is The Entry Level Of The Order, Defval = na
     StopLoss (float) : Is The Custom StopLoss Distance, Defval = 2x ATR Below Close
  Returns: Float - The StopLoss Level In Actual Price As A
 CalculateStopLossDistance(OrderType, Entry, StopLoss) 
  Calculate StopLoss Distance In Pips
  Parameters:
     OrderType (int) : Is To Determine A Long / Short Position, Defval = 1
     Entry (float) : Is The Entry Level Of The Order, NEED TO INPUT PARAM
     StopLoss (float) : Level Based On Previous Calculation, NEED TO INPUT PARAM
  Returns: Float - The StopLoss Value In Pips
 CalculateTakeProfitLevel(OrderType, Entry, StopLossDistance, RiskReward) 
  Calculate TakeProfit Level
  Parameters:
     OrderType (int) : Is To Determine A Long / Short Position, Defval = 1
     Entry (float) : Is The Entry Level Of The Order, Defval = na
     StopLossDistance (float) 
     RiskReward (float) 
  Returns: Float  - The TakeProfit Level In Actual Price
 CalculateTakeProfitDistance(OrderType, Entry, TakeProfit) 
  Get TakeProfit Distance In Pips
  Parameters:
     OrderType (int) : Is To Determine A Long / Short Position, Defval = 1
     Entry (float) : Is The Entry Level Of The Order, NEED TO INPUT PARAM
     TakeProfit (float) : Level Based On Previous Calculation, NEED TO INPUT PARAM
  Returns: Float - The TakeProfit Value In Pips
 CalculateConversionCurrency(AccountCurrency, SymbolCurrency, BaseCurrency) 
  Get The Conversion Currecny Between Current Account Currency & Current Pair's Quoted Currency (FOR FOREX ONLY)
  Parameters:
     AccountCurrency (simple string) : Is For The Account Currency Used 
     SymbolCurrency (simple string) : Is For The Current Symbol Currency (Front Symbol)
     BaseCurrency (simple string) : Is For The Current Symbol Base Currency (Back Symbol)
  Returns: Tuple Of A Bollean (Convert The Currency ?) And A String (Converted Currency)
 CalculateConversionRate(ConvertCurrency, ConversionRate) 
  Get The Conversion Rate Between Current Account Currency & Current Pair's Quoted Currency (FOR FOREX ONLY)
  Parameters:
     ConvertCurrency (bool) : Is To Check If The Current Symbol Needs To Be Converted Or Not
     ConversionRate (float) : Is The Quoted Price Of The Conversion Currency (Input The request.security Function Here)
  Returns: Float Price Of Conversion Rate (If In The Same Currency Than Return Value Will Be 1.0)
 LotSize(LotSizeSimple, Balance, Risk, SLDistance, ConversionRate) 
  Get Current Lot Size
  Parameters:
     LotSizeSimple (bool) : Is To Toggle Lot Sizing Calculation (Simple Is Good Enough For Stocks & Crypto, Whilst Complex Is For Forex)
     Balance (float) : Is For The Current Account Balance To Calculate The Lot Sizing Based Off
     Risk (float) : Is For The Current Risk Per Trade To Calculate The Lot Sizing Based Off
     SLDistance (float) : Is The Current Position StopLoss Distance From Its Entry Price
     ConversionRate (float) : Is The Currency Conversion Rate (Used For Complex Lot Sizing Only)
  Returns: Float - Position Size In Units
 ToLots(Units) 
  Converts Units To Lots
  Parameters:
     Units (float) : Is For How Many Units Need To Be Converted Into Lots (Minimun 1000 Units)
  Returns: Float - Position Size In Lots
 ToUnits(Lots) 
  Converts Lots To Units
  Parameters:
     Lots (float) : Is For How Many Lots Need To Be Converted Into Units (Minimun 0.01 Units)
  Returns: Int - Position Size In Units
 ToLotsInUnits(Units) 
  Converts Units To Lots Than Back To Units
  Parameters:
     Units (float) : Is For How Many Units Need To Be Converted Into Lots (Minimun 1000 Units)
  Returns: Float - Position Size In Lots That Were Rounded To Units
 ATRTrail(OrderType, SourceType, ATRPeriod, ATRMultiplyer, SwingLookback) 
  Calculate ATR Trailing Stop
  Parameters:
     OrderType (int) : Is To Determine A Long / Short Position, Defval = 1 
     SourceType (int) : Is To Determine Where To Calculate The ATR Trailing From, Defval = close
     ATRPeriod (simple int) : Is To Change Its ATR Period, Defval = 20
     ATRMultiplyer (float) : Is To Change Its ATR Trailing Distance, Defval = 1
     SwingLookback (int) : Is To Change Its Swing HiLo Lookback (Only From Source Type 5), Defval = 7
  Returns: Float - Number Of The Current ATR Trailing
 DangerZone(WinRate, AvgRRR, Filter) 
  Calculate Danger Zone Of A Given Strategy
  Parameters:
     WinRate (float) : Is The Strategy WinRate
     AvgRRR (float) : Is The Strategy Avg RRR
     Filter (float) : Is The Minimum Profit It Needs To Be Out Of BE Zone, Defval = 3
  Returns: Int - Value, 1 If Out Of Danger Zone, 0 If BE, -1 If In Danger Zone
 IsQuestionableTrades(TradeTP, TradeSL) 
  Checks For Questionable Trades (Which Are Trades That Its TP & SL Level Got Hit At The Same Candle)
  Parameters:
     TradeTP (float) : Is The Trade In Question Take Profit Level
     TradeSL (float) : Is The Trade In Question Stop Loss Level
  Returns: Bool - True If The Last Trade Was A "Questionable Trade"
//====================================================================================================================================================
//  Custom Strategy Functions 
//====================================================================================================================================================
 OpenLong(EntryID, LotSize, LimitPrice, StopPrice, Comment, CommentValue) 
  Open A Long Order Based On The Given Params
  Parameters:
     EntryID (string) : Is The Trade Entry ID, Defval = "Long"
     LotSize (float) : Is The Lot Size Of The Trade, Defval = 1
     LimitPrice (float) : Is The Limit Order Price To Set The Order At, Defval = Na / Market Order Execution
     StopPrice (float) : Is The Stop Order Price To Set The Order At, Defval = Na / Market Order Execution
     Comment (string) : Is The Order Comment, Defval = Long Entry Order
     CommentValue (string) : Is For Custom Values In The Order Comment, Defval = Na
  Returns: Void
 OpenShort(EntryID, LotSize, LimitPrice, StopPrice, Comment, CommentValue) 
  Open A Short Order Based On The Given Params
  Parameters:
     EntryID (string) : Is The Trade Entry ID, Defval = "Short"
     LotSize (float) : Is The Lot Size Of The Trade, Defval = 1
     LimitPrice (float) : Is The Limit Order Price To Set The Order At, Defval = Na / Market Order Execution
     StopPrice (float) : Is The Stop Order Price To Set The Order At, Defval = Na / Market Order Execution
     Comment (string) : Is The Order Comment, Defval = Short Entry Order
     CommentValue (string) : Is For Custom Values In The Order Comment, Defval = Na
  Returns: Void
 TP_SLExit(FromID, TPLevel, SLLevel, PercentageClose, Comment, CommentValue) 
  Exits Based On Predetermined TP & SL Levels
  Parameters:
     FromID (string) : Is The Trade ID That The TP & SL Levels Be Palced 
     TPLevel (float) : Is The Take Profit Level
     SLLevel (float) : Is The StopLoss Level
     PercentageClose (float) : Is The Amount To Close The Order At (In Percentage) Defval = 100
     Comment (string) : Is The Order Comment, Defval = Exit Order
     CommentValue (string) : Is For Custom Values In The Order Comment, Defval = Na 
  Returns: Void
 CloseLong(ExitID, PercentageClose, Comment, CommentValue, Instant) 
  Exits A Long Order Based On A Specified Condition
  Parameters:
     ExitID (string) : Is The Trade ID That Will Be Closed, Defval = "Long"
     PercentageClose (float) : Is The Amount To Close The Order At (In Percentage) Defval = 100
     Comment (string) : Is The Order Comment, Defval = Exit Order
     CommentValue (string) : Is For Custom Values In The Order Comment, Defval = Na 
     Instant (bool) : Is For Exit Execution Type, Defval = false
  Returns: Void
 CloseShort(ExitID, PercentageClose, Comment, CommentValue, Instant) 
  Exits A Short Order Based On A Specified Condition
  Parameters:
     ExitID (string) : Is The Trade ID That Will Be Closed, Defval = "Short"
     PercentageClose (float) : Is The Amount To Close The Order At (In Percentage) Defval = 100
     Comment (string) : Is The Order Comment, Defval = Exit Order
     CommentValue (string) : Is For Custom Values In The Order Comment, Defval = Na 
     Instant (bool) : Is For Exit Execution Type, Defval = false
  Returns: Void
 BrokerCheck(Broker) 
  Checks Traded Broker With Current Loaded Chart Broker
  Parameters:
     Broker (string) : Is The Current Broker That Is Traded 
  Returns: Bool - True If Current Traded Broker Is Same As Loaded Chart Broker
 OpenPC(LicenseID, OrderType, UseLimit, LimitPrice, SymbolPrefix, Symbol, SymbolSuffix, Risk, SL, TP, OrderComment, Spread) 
  Compiles Given Parameters Into An Alert String Format To Open Trades Using Pine Connector
  Parameters:
     LicenseID (string) : Is The Users PineConnector LicenseID
     OrderType (int) : Is The Desired OrderType To Open
     UseLimit (bool) : Is If We Want To Enter The Position At Exactly The Previous Closing Price
     LimitPrice (float) : Is The Limit Price Of The Trade (Only For Pending Orders)
     SymbolPrefix (string) : Is The Current Symbol Prefix (If Any)
     Symbol (string) : Is The Traded Symbol
     SymbolSuffix (string) : Is The Current Symbol Suffix (If Any)
     Risk (float) : Is The Trade Risk Per Trade / Fixed Lot Sizing
     SL (float) : Is The Trade SL In Price / In Pips
     TP (float) : Is The Trade TP In Price / In Pips
     OrderComment (string) : Is The Executed Trade Comment
     Spread (float) : is The Maximum Spread For Execution
  Returns: String - Pine Connector Order Syntax Alert Message
 ClosePC(LicenseID, OrderType, SymbolPrefix, Symbol, SymbolSuffix) 
  Compiles Given Parameters Into An Alert String Format To Close Trades Using Pine Connector
  Parameters:
     LicenseID (string) : Is The Users PineConnector LicenseID
     OrderType (int) : Is The Desired OrderType To Close
     SymbolPrefix (string) : Is The Current Symbol Prefix (If Any)
     Symbol (string) : Is The Traded Symbol
     SymbolSuffix (string) : Is The Current Symbol Suffix (If Any)
  Returns: String - Pine Connector Order Syntax Alert Message
//====================================================================================================================================================
//  Custom Backtesting Calculation Functions 
//====================================================================================================================================================
 CalculatePNL(EntryPrice, ExitPrice, LotSize, ConversionRate) 
  Calculates Trade PNL Based On Entry, Eixt & Lot Size
  Parameters:
     EntryPrice (float) : Is The Trade Entry
     ExitPrice (float) : Is The Trade Exit
     LotSize (float) : Is The Trade Sizing
     ConversionRate (float) : Is The Currency Conversion Rate (Used For Complex Lot Sizing Only)
  Returns: Float - The Current Trade PNL
 UpdateBalance(PrevBalance, PNL) 
  Updates The Previous Ginve Balance To The Next PNL
  Parameters:
     PrevBalance (float) : Is The Previous Balance To Be Updated
     PNL (float) : Is The Current Trade PNL To Be Added
  Returns: Float - The Current Updated PNL
 CalculateSlpComm(PNL, MaxRate) 
  Calculates Random Slippage & Commisions Fees Based On The Parameters
  Parameters:
     PNL (float) : Is The Current Trade PNL 
     MaxRate (float) : Is The Upper Limit (In Percentage) Of The Randomized Fee
  Returns: Float - A Percentage Fee Of The Current Trade PNL
 UpdateDD(MaxBalance, Balance) 
  Calculates & Updates The DD Based On Its Given Parameters
  Parameters:
     MaxBalance (float) : Is The Maximum Balance Ever Recorded
     Balance (float) : Is The Current Account Balance
  Returns: Float - The Current Strategy DD
 CalculateWR(TotalTrades, LongID, ShortID) 
  Calculate The Total, Long & Short Trades Win Rate
  Parameters:
     TotalTrades (int) : Are The Current Total Trades That The Strategy Has Taken
     LongID (string) : Is The Order ID Of The Long Trades Of The Strategy
     ShortID (string) : Is The Order ID Of The Short Trades Of The Strategy
  Returns: Tuple Of Long WR%, Short WR%, Total WR%, Total Winning Trades, Total Losing Trades, Total Long Trades & Total Short Trades
 CalculateAvgRRR(WinTrades, LossTrades) 
  Calculates The Overall Strategy Avg Risk Reward Ratio
  Parameters:
     WinTrades (int) : Are The Strategy Winning Trades
     LossTrades (int) : Are The Strategy Losing Trades
  Returns: Float - The Average RRR Values
 CAGR(StartTime, StartPrice, EndTime, EndPrice) 
  Calculates The CAGR Over The Given Time Period © TradingView
  Parameters:
     StartTime (int) : Is The Starting Time Of The Calculation
     StartPrice (float) : Is The Starting Price Of The Calculation
     EndTime (int) : Is The Ending Time Of The Calculation
     EndPrice (float) : Is The Ending Price Of The Calculation
  Returns: Float - The CAGR Values
//====================================================================================================================================================
//  Custom Plot Functions 
//====================================================================================================================================================
 EditLabels(LabelID, X1, Y1, Text, Color, TextColor, EditCondition, DeleteCondition) 
  Edit / Delete Labels
  Parameters:
     LabelID (label) : Is The ID Of The Selected Label
     X1 (int) : Is The X1 Coordinate IN BARINDEX Xloc
     Y1 (float) : Is The Y1 Coordinate IN PRICE Yloc
     Text (string) : Is The Text Than Wants To Be Written In The Label
     Color (color) : Is The Color Value Change Of The Label Text
     TextColor (color) 
     EditCondition (int) : Is The Edit Condition of The Line (Setting Location / Color)
     DeleteCondition (bool) : Is The Delete Condition Of The Line If Ture Deletes The Prev Itteration Of The Line
  Returns: Void
 EditLine(LineID, X1, Y1, X2, Y2, Color, EditCondition, DeleteCondition) 
  Edit / Delete Lines
  Parameters:
     LineID (line) : Is The ID Of The Selected Line
     X1 (int) : Is The X1 Coordinate IN BARINDEX Xloc
     Y1 (float) : Is The Y1 Coordinate IN PRICE Yloc
     X2 (int) : Is The X2 Coordinate IN BARINDEX Xloc
     Y2 (float) : Is The Y2 Coordinate IN PRICE Yloc
     Color (color) : Is The Color Value Change Of The Line
     EditCondition (int) : Is The Edit Condition of The Line (Setting Location / Color)
     DeleteCondition (bool) : Is The Delete Condition Of The Line If Ture Deletes The Prev Itteration Of The Line
  Returns: Void
//====================================================================================================================================================
//  Custom Display Functions (Using Tables) 
//====================================================================================================================================================
 FillTable(TableID, Column, Row, Title, Value, BgColor, TextColor, ToolTip) 
  Filling The Selected Table With The Inputed Information
  Parameters:
     TableID (table) : Is The Table ID That Wants To Be Edited
     Column (int) : Is The Current Column Of The Table That Wants To Be Edited
     Row (int) : Is The Current Row Of The Table That Wants To Be Edited 
     Title (string) : Is The String Title Of The Current Cell Table
     Value (string) : Is The String Value Of The Current Cell Table
     BgColor (color) : Is The Selected Color For The Current Table
     TextColor (color) : Is The Selected Color For The Current Table
     ToolTip (string) : Is The ToolTip Of The Current Cell In The Table
  Returns: Void
 DisplayBTResults(TableID, BgColor, TextColor, StartingBalance, Balance, DollarReturn, TotalPips, MaxDD) 
  Filling The Selected Table With The Inputed Information
  Parameters:
     TableID (table) : Is The Table ID That Wants To Be Edited
     BgColor (color) : Is The Selected Color For The Current Table
     TextColor (color) : Is The Selected Color For The Current Table
     StartingBalance (float) : Is The Account Starting Balance
     Balance (float) 
     DollarReturn (float) : Is The Account Dollar Reture
     TotalPips (float) : Is The Total Pips Gained / loss
     MaxDD (float) : Is The Maximum Drawdown Over The Backtesting Period
  Returns: Void
 DisplayBTResultsV2(TableID, BgColor, TextColor, TotalWR, QTCount, LongWR, ShortWR, InitialCapital, CumProfit, CumFee, AvgRRR, MaxDD, CAGR, MeanDD) 
  Filling The Selected Table With The Inputed Information
  Parameters:
     TableID (table) : Is The Table ID That Wants To Be Edited
     BgColor (color) : Is The Selected Color For The Current Table
     TextColor (color) : Is The Selected Color For The Current Table
     TotalWR (float) : Is The Strategy Total WR In %
     QTCount (int) : Is The Strategy Questionable Trades Count
     LongWR (float) : Is The Strategy Total WR In %
     ShortWR (float) : Is The Strategy Total WR In %
     InitialCapital (float) : Is The Strategy Initial Starting Capital
     CumProfit (float) : Is The Strategy Ending Cumulative Profit
     CumFee (float) : Is The Strategy Ending Cumulative Fee (Based On Randomized Fee Assumptions)
     AvgRRR (float) : Is The Strategy Average Risk Reward Ratio
     MaxDD (float) : Is The Strategy Maximum DrawDown In Its Backtesting Period
     CAGR (float) : Is The Strategy Compounded Average GRowth In %
     MeanDD (float) : Is The Strategy Mean / Average Drawdown In The Backtesting Period
  Returns: Void
//====================================================================================================================================================
//  Custom Pattern Detection Functions 
//====================================================================================================================================================
 BullFib(priceLow, priceHigh, fibRatio) 
  Calculates A Bullish Fibonacci Value (From Swing Low To High) © ZenAndTheArtOfTrading
  Parameters:
     priceLow (float) 
     priceHigh (float) 
     fibRatio (float) 
  Returns: The Fibonacci Value Of The Given Ratio Between The Two Price Points
 BearFib(priceLow, priceHigh, fibRatio) 
  Calculates A Bearish Fibonacci Value (From Swing High To Low) © ZenAndTheArtOfTrading
  Parameters:
     priceLow (float) 
     priceHigh (float) 
     fibRatio (float) 
  Returns: The Fibonacci Value Of The Given Ratio Between The Two Price Points
 GetBodySize() 
  Gets The Current Candle Body Size IN POINTS © ZenAndTheArtOfTrading
  Returns: The Current Candle Body Size IN POINTS
 GetTopWickSize() 
  Gets The Current Candle Top Wick Size IN POINTS © ZenAndTheArtOfTrading
  Returns: The Current Candle Top Wick Size IN POINTS
 GetBottomWickSize() 
  Gets The Current Candle Bottom Wick Size IN POINTS © ZenAndTheArtOfTrading
  Returns: The Current Candle Bottom Wick Size IN POINTS
 GetBodyPercent() 
  Gets The Current Candle Body Size As A Percentage Of Its Entire Size Including Its Wicks © ZenAndTheArtOfTrading
  Returns: The Current Candle Body Size IN PERCENTAGE
 GetTopWickPercent() 
  Gets The Current Top Wick Size As A Percentage Of Its Entire Body Size
  Returns: Float - The Current Candle Top Wick Size IN PERCENTAGE
 GetBottomWickPercent() 
  Gets The Current Bottom Wick Size As A Percentage Of Its Entire Bodu Size
  Returns: Float - The Current Candle Bottom Size IN PERCENTAGE
 BullishEC(Allowance, RejectionWickSize, EngulfWick, NearSwings, SwingLookBack) 
  Checks If The Current Bar Is A Bullish Engulfing Candle
  Parameters:
     Allowance (int) : To Give Flexibility Of Engulfing Pattern Detection In Markets That Have Micro Gaps, Defval = 0
     RejectionWickSize (float) : To Filter Out long (Upper And Lower) Wick From The Bullsih Engulfing Pattern, Defval = na
     EngulfWick (bool) : To Specify If We Want The Pattern To Also Engulf Its Upper & Lower Previous Wicks, Defval = false
     NearSwings (bool) : To Specify If We Want The Pattern To Be Near A Recent Swing Low, Defval = true
     SwingLookBack (int) : To Specify How Many Bars Back To Detect A Recent Swing Low, Defval = 10
  Returns: Bool - True If The Current Bar Matches The Requirements of a Bullish Engulfing Candle
 BearishEC(Allowance, RejectionWickSize, EngulfWick, NearSwings, SwingLookBack) 
  Checks If The Current Bar Is A Bearish Engulfing Candle
  Parameters:
     Allowance (int) : To Give Flexibility Of Engulfing Pattern Detection In Markets That Have Micro Gaps, Defval = 0
     RejectionWickSize (float) : To Filter Out long (Upper And Lower) Wick From The Bearish Engulfing Pattern, Defval = na
     EngulfWick (bool) : To Specify If We Want The Pattern To Also Engulf Its Upper & Lower Previous Wicks, Defval = false
     NearSwings (bool) : To Specify If We Want The Pattern To Be Near A Recent Swing High, Defval = true
     SwingLookBack (int) : To Specify How Many Bars Back To Detect A Recent Swing High, Defval = 10
  Returns: Bool - True If The Current Bar Matches The Requirements of a Bearish Engulfing Candle
 Hammer(Fib, ColorMatch, NearSwings, SwingLookBack, ATRFilterCheck, ATRPeriod) 
  Checks If The Current Bar Is A Hammer Candle
  Parameters:
     Fib (float) : To Specify Which Fibonacci Ratio To Use When Determining The Hammer Candle, Defval = 0.382 Ratio
     ColorMatch (bool) : To Filter Only Bullish Closed Hammer Candle Pattern, Defval = false
     NearSwings (bool) : To Specify If We Want The Doji To Be Near A Recent Swing Low, Defval = true
     SwingLookBack (int) : To Specify How Many Bars Back To Detect A Recent Swing Low, Defval = 10
     ATRFilterCheck (float) : To Filter Smaller Hammer Candles That Might Be Better Classified As A Doji Candle, Defval = 1
     ATRPeriod (simple int) : To Change ATR Period Of The ATR Filter, Defval = 20
  Returns: Bool - True If The Current Bar Matches The Requirements of a Hammer Candle
 Star(Fib, ColorMatch, NearSwings, SwingLookBack, ATRFilterCheck, ATRPeriod) 
  Checks If The Current Bar Is A Hammer Candle
  Parameters:
     Fib (float) : To Specify Which Fibonacci Ratio To Use When Determining The Hammer Candle, Defval = 0.382 Ratio
     ColorMatch (bool) : To Filter Only Bullish Closed Hammer Candle Pattern, Defval = false
     NearSwings (bool) : To Specify If We Want The Doji To Be Near A Recent Swing Low, Defval = true
     SwingLookBack (int) : To Specify How Many Bars Back To Detect A Recent Swing Low, Defval = 10
     ATRFilterCheck (float) : To Filter Smaller Hammer Candles That Might Be Better Classified As A Doji Candle, Defval = 1
     ATRPeriod (simple int) : To Change ATR Period Of The ATR Filter, Defval = 20
  Returns: Bool - True If The Current Bar Matches The Requirements of a Hammer Candle
 Doji(MaxWickSize, MaxBodySize, DojiType, NearSwings, SwingLookBack) 
  Checks If The Current Bar Is A Doji Candle
  Parameters:
     MaxWickSize (float) : To Specify The Maximum Lenght Of Its Upper & Lower Wick, Defval = 2
     MaxBodySize (float) : To Specify The Maximum Lenght Of Its Candle Body IN PERCENT, Defval = 0.05
     DojiType (int) 
     NearSwings (bool) : To Specify If We Want The Doji To Be Near A Recent Swing High / Low (Only In Dragonlyf / Gravestone Mode), Defval = true
     SwingLookBack (int) : To Specify How Many Bars Back To Detect A Recent Swing High / Low (Only In Dragonlyf / Gravestone Mode), Defval = 10
  Returns: Bool - True If The Current Bar Matches The Requirements of a Doji Candle
 BullishIB(Allowance, RejectionWickSize, EngulfWick, NearSwings, SwingLookBack) 
  Checks If The Current Bar Is A Bullish Harami Candle
  Parameters:
     Allowance (int) : To Give Flexibility Of Harami Pattern Detection In Markets That Have Micro Gaps, Defval = 0
     RejectionWickSize (float) : To Filter Out long (Upper And Lower) Wick From The Bullsih Harami Pattern, Defval = na
     EngulfWick (bool) : To Specify If We Want The Pattern To Also Engulf Its Upper & Lower Previous Wicks, Defval = false
     NearSwings (bool) : To Specify If We Want The Pattern To Be Near A Recent Swing Low, Defval = true
     SwingLookBack (int) : To Specify How Many Bars Back To Detect A Recent Swing Low, Defval = 10
  Returns: Bool - True If The Current Bar Matches The Requirements of a Bullish Harami Candle
 BearishIB(Allowance, RejectionWickSize, EngulfWick, NearSwings, SwingLookBack) 
  Checks If The Current Bar Is A Bullish Harami Candle
  Parameters:
     Allowance (int) : To Give Flexibility Of Harami Pattern Detection In Markets That Have Micro Gaps, Defval = 0
     RejectionWickSize (float) : To Filter Out long (Upper And Lower) Wick From The Bearish Harami Pattern, Defval = na
     EngulfWick (bool) : To Specify If We Want The Pattern To Also Engulf Its Upper & Lower Previous Wicks, Defval = false
     NearSwings (bool) : To Specify If We Want The Pattern To Be Near A Recent Swing High, Defval = true
     SwingLookBack (int) : To Specify How Many Bars Back To Detect A Recent Swing High, Defval = 10
  Returns: Bool - True If The Current Bar Matches The Requirements of a Bearish Harami Candle
//====================================================================================================================================================
//  Custom Time Functions 
//====================================================================================================================================================
 BarInSession(sess, useFilter) 
  Determines if the current price bar falls inside the specified session © ZenAndTheArtOfTrading
  Parameters:
     sess (simple string) 
     useFilter (bool) 
  Returns: A boolean - true if the current bar falls within the given time session
 BarOutSession(sess, useFilter) 
  Determines if the current price bar falls outside the specified session © ZenAndTheArtOfTrading
  Parameters:
     sess (simple string) 
     useFilter (bool) 
  Returns: A boolean - true if the current bar falls outside the given time session
 DateFilter(startTime, endTime) 
  Determines if this bar's time falls within date filter range © ZenAndTheArtOfTrading
  Parameters:
     startTime (int) 
     endTime (int) 
  Returns: A boolean - true if the current bar falls within the given dates
 DayFilter(monday, tuesday, wednesday, thursday, friday, saturday, sunday) 
  Checks if the current bar's day is in the list of given days to analyze © ZenAndTheArtOfTrading
  Parameters:
     monday (bool) 
     tuesday (bool) 
     wednesday (bool) 
     thursday (bool) 
     friday (bool) 
     saturday (bool) 
     sunday (bool) 
  Returns: A boolean - true if the current bar's day is one of the given days
 AUSSess() 
  Checks If The Current Australian Forex Session In Running
  Returns: Bool - True If Currently The Australian Session Is Running
 ASIASess() 
  Checks If The Current Asian Forex Session In Running
  Returns: Bool - True If Currently The Asian Session Is Running
 EURSess() 
  Checks If The Current European Forex Session In Running
  Returns: Bool - True If Currently The European Session Is Running
 USSess() 
  Checks If The Current US Forex Session In Running
  Returns: Bool - True If Currently The US Session Is Running
 UNIXToDate(Time, ConversionType, TimeZone) 
  Converts UNIX Time To Datetime
  Parameters:
     Time (int) : Is The UNIX Time Input
     ConversionType (int) : Is The Datetime Output Format, Defval = DD-MM-YYYY
     TimeZone (string) : Is To Convert The Outputed Datetime Into The Specified Time Zone, Defval = Exchange Time Zone
  Returns: String - String Of Datetime
Candle Counter [theEccentricTrader]█   OVERVIEW 
This indicator counts the number of confirmed candle scenarios on any given candlestick chart and displays the statistics in a table, which can be repositioned and resized at the user's discretion. 
█   CONCEPTS  
 Green and Red Candles 
 
 A green candle is one that closes with a high price equal to or above the price it opened. 
 A red candle is one that closes with a low price that is lower than the price it opened. 
 
 Upper Candle Trends 
 
 A higher high candle is one that closes with a higher high price than the high price of the preceding candle.
 A lower high candle is one that closes with a lower high price than the high price of the preceding candle. 
 A double-top candle is one that closes with a high price that is equal to the high price of the preceding candle.
 
 Lower Candle Trends 
 
 A higher low candle is one that closes with a higher low price than the low price of the preceding candle. 
 A lower low candle is one that closes with a lower low price than the low price of the preceding candle.
 A double-bottom candle is one that closes with a low price that is equal to the low price of the preceding candle.
 
█   FEATURES 
 Inputs 
 
 Start Date
 End Date 
 Position 
 Text Size 
 Show Sample Period 
 Show Plots 
 
 Table 
The table is colour coded, consists of three columns and twenty-two rows. Blue cells denote all candle scenarios, green cells denote green candle scenarios and red cells denote red candle scenarios. 
The candle scenarios are listed in the first column with their corresponding total counts to the right, in the second column. The last row in column one, row twenty-two, displays the sample period which can be adjusted or hidden via indicator settings.
Rows two and three in the third column of the table display the total green and red candles as percentages of total candles. Rows four to nine in column three, coloured blue, display the corresponding candle scenarios as percentages of total candles. Rows ten to fifteen in column three, coloured green, display the corresponding candle scenarios as percentages of total green candles. And lastly, rows sixteen to twenty-one in column three, coloured red, display the corresponding candle scenarios as percentages of total red candles.
 Plots 
I have added plots as a visual aid to the various candle scenarios listed in the table. Green up-arrows denote higher high candles when above bar and higher low candles when below bar. Red down-arrows denote lower high candles when above bar and lower low candles when below bar. Similarly, blue diamonds when above bar denote double-top candles and when below bar denote double-bottom candles. These plots can also be hidden via indicator settings. 
█   HOW TO USE 
 
This indicator is intended for research purposes and strategy development. I hope it will be useful in helping to gain a better understanding of the underlying dynamics at play on any given market and timeframe. It can, for example, give you an idea of any inherent biases such as a greater proportion of green candles to red. Or a greater proportion of higher low green candles to lower low green candles. Such information can be very useful when conducting top down analysis across multiple timeframes, or considering trailing stop loss methods. 
What you do with these statistics and how far you decide to take your research is entirely up to you, the possibilities are endless. 
This is just the first and most basic in a series of indicators that can be used to study objective price action scenarios and develop a systematic approach to trading. 
█   LIMITATIONS 
 
Some higher timeframe candles on tickers with larger lookbacks such as the DXY, do not actually contain all the open, high, low and close (OHLC) data at the beginning of the chart. Instead, they use the close price for open, high and low prices. So, while we can determine whether the close price is higher or lower than the preceding close price, there is no way of knowing what actually happened intra-bar for these candles. And by default candles that close at the same price as the open price, will be counted as green. You can avoid this problem by utilising the sample period filter.
 
The green and red candle calculations are based solely on differences between open and close prices, as such I have made no attempt to account for green candles that gap lower and close below the close price of the preceding candle, or red candles that gap higher and close above the close price of the preceding candle. I can only recommend using 24-hour markets, if and where possible, as there are far fewer gaps and, generally, more data to work with. Alternatively, you can replace the scenarios with your own logic to account for the gap anomalies, if you are feeling up to the challenge.
It is also worth noting that the sample size will be limited to your Trading View subscription plan. Premium users get 20,000 candles worth of data, pro+ and pro users get 10,000, and basic users get 5,000. If upgrading is currently not an option, you can always keep a rolling tally of the statistics in an excel spreadsheet or something of the like. 
MomentumIndicatorsLibrary   "MomentumIndicators" 
This is a library of 'Momentum Indicators', also denominated as oscillators.
The purpose of this library is to organize momentum indicators in just one place, making it easy to access.
In addition, it aims to allow customized versions, not being restricted to just the price value.
An example of this use case is the popular Stochastic RSI.
# Indicators:
1. Relative Strength Index (RSI): 
Measures the relative strength of recent price gains to recent price losses of an asset.
2. Rate of Change (ROC): 
Measures the percentage change in price of an asset over a specified time period.
3. Stochastic Oscillator (Stoch): 
Compares the current price of an asset to its price range over a specified time period.
4. True Strength Index (TSI):
Measures the price change, calculating the ratio of the price change (positive or negative) in relation to the 
absolute price change.
The values of both are smoothed twice to reduce noise, and the final result is normalized 
in a range between 100 and -100.
5. Stochastic Momentum Index (SMI): 
Combination of the True Strength Index with a signal line to help identify turning points in the market.
6. Williams Percent Range (Williams %R): 
Compares the current price of an asset to its highest high and lowest low over a specified time period.
7. Commodity Channel Index (CCI): 
Measures the relationship between an asset's current price and its moving average.
8. Ultimate Oscillator (UO): 
Combines three different time periods to help identify possible reversal points.
9. Moving Average Convergence/Divergence (MACD): 
Shows the difference between short-term and long-term exponential moving averages.
10. Fisher Transform (FT): 
Normalize prices into a Gaussian normal distribution.
11. Inverse Fisher Transform (IFT): 
Transform the values of the Fisher Transform into a smaller and more easily interpretable scale is through the 
application of an inverse transformation to the hyperbolic tangent function. 
This transformation takes the values of the FT, which range from -infinity to +infinity, to a scale limited 
between -1 and +1, allowing them to be more easily visualized and compared.
12. Premier Stochastic Oscillator (PSO):
Normalizes the standard stochastic oscillator by applying a five-period double exponential smoothing average of 
the %K value, resulting in a symmetric scale of 1 to -1
# Indicators of indicators:
## Stochastic:
1. Stochastic of RSI (Relative Strengh Index)
2. Stochastic of ROC (Rate of Change)
3. Stochastic of UO (Ultimate Oscillator)
4. Stochastic of TSI (True Strengh Index)
5. Stochastic of Williams R%
6. Stochastic of CCI (Commodity Channel Index).
7. Stochastic of MACD (Moving Average Convergence/Divergence)
8. Stochastic of FT (Fisher Transform)
9. Stochastic of Volume
10. Stochastic of MFI (Money Flow Index)
11. Stochastic of On OBV (Balance Volume)
12. Stochastic of PVI (Positive Volume Index)
13. Stochastic of NVI (Negative Volume Index)
14. Stochastic of PVT (Price-Volume Trend)
15. Stochastic of VO (Volume Oscillator)
16. Stochastic of VROC (Volume Rate of Change)
## Inverse Fisher Transform:
1.Inverse Fisher Transform on RSI (Relative Strengh Index)
2.Inverse Fisher Transform on ROC (Rate of Change)
3.Inverse Fisher Transform on UO (Ultimate Oscillator)
4.Inverse Fisher Transform on Stochastic
5.Inverse Fisher Transform on TSI (True Strength Index)
6.Inverse Fisher Transform on CCI (Commodity Channel Index)
7.Inverse Fisher Transform on Fisher Transform (FT)
8.Inverse Fisher Transform on MACD (Moving Average Convergence/Divergence)
9.Inverse Fisher Transfor on Williams R% (Williams Percent Range)
10.Inverse Fisher Transfor on CMF (Chaikin Money Flow)
11.Inverse Fisher Transform on VO (Volume Oscillator)
12.Inverse Fisher Transform on VROC (Volume Rate of Change)
## Stochastic Momentum Index:
1.Stochastic Momentum Index of RSI (Relative Strength Index)
2.Stochastic Momentum Index of ROC (Rate of Change)
3.Stochastic Momentum Index of VROC (Volume Rate of Change)
4.Stochastic Momentum Index of Williams R% (Williams Percent Range)
5.Stochastic Momentum Index of FT (Fisher Transform)
6.Stochastic Momentum Index of CCI (Commodity Channel Index)
7.Stochastic Momentum Index of UO (Ultimate Oscillator)
8.Stochastic Momentum Index of MACD (Moving Average Convergence/Divergence)
9.Stochastic Momentum Index of Volume
10.Stochastic Momentum Index of MFI (Money Flow Index)
11.Stochastic Momentum Index of CMF (Chaikin Money Flow)
12.Stochastic Momentum Index of On Balance Volume (OBV)
13.Stochastic Momentum Index of Price-Volume Trend (PVT)
14.Stochastic Momentum Index of Volume Oscillator (VO)
15.Stochastic Momentum Index of Positive Volume Index (PVI)
16.Stochastic Momentum Index of Negative Volume Index (NVI)
## Relative Strength Index:
1. RSI for Volume
2. RSI for Moving Average
 rsi(source, length) 
  RSI (Relative Strengh Index). Measures the relative strength of recent price gains to recent price losses of an asset.
  Parameters:
     source : (float) Source of series (close, high, low, etc.)
     length : (int) Period of loopback
  Returns: (float) Series of RSI
 roc(source, length) 
  ROC (Rate of Change). Measures the percentage change in price of an asset over a specified time period.
  Parameters:
     source : (float) Source of series (close, high, low, etc.)
     length : (int) Period of loopback
  Returns: (float) Series of ROC
 stoch(kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD) 
  Stochastic Oscillator. Compares the current price of an asset to its price range over a specified time period.
  Parameters:
     kLength 
     kSmoothing : (int) Period for smoothig stochastic
     dSmoothing : (int) Period for signal (moving average of stochastic)
     maTypeK : (int) Type of Moving Average for Stochastic Oscillator
     maTypeD : (int) Type of Moving Average for Stochastic Oscillator Signal
     almaOffsetKD : (float) Offset for Arnaud Legoux Moving Average for Oscillator and Signal
     almaSigmaKD : (float) Sigma for Arnaud Legoux Moving Average for Oscillator and Signal
     lsmaOffSetKD : (int) Offset for Least Squares Moving Average for Oscillator and Signal
  Returns:   A tuple of Stochastic Oscillator and Moving Average of Stochastic Oscillator
 stoch(source, kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD) 
  Stochastic Oscillator. Customized source. Compares the current price of an asset to its price range over a specified time period.
  Parameters:
     source : (float) Source of series (close, high, low, etc.)
     kLength : (int) Period of loopback to calculate the stochastic
     kSmoothing : (int) Period for smoothig stochastic
     dSmoothing : (int) Period for signal (moving average of stochastic)
     maTypeK : (int) Type of Moving Average for Stochastic Oscillator
     maTypeD : (int) Type of Moving Average for Stochastic Oscillator Signal
     almaOffsetKD : (float) Offset for Arnaud Legoux Moving Average for Stoch and Signal
     almaSigmaKD : (float) Sigma for Arnaud Legoux Moving Average for Stoch and Signal
     lsmaOffSetKD : (int) Offset for Least Squares Moving Average for Stoch and Signal
  Returns:   A tuple of Stochastic Oscillator and Moving Average of Stochastic Oscillator
 tsi(source, shortLength, longLength, maType, almaOffset, almaSigma, lsmaOffSet) 
  TSI (True Strengh Index). Measures the price change, calculating the ratio of the price change (positive or negative) in relation to the absolute price change.
The values of both are smoothed twice to reduce noise, and the final result is normalized in a range between 100 and -100.
  Parameters:
     source : (float) Source of series (close, high, low, etc.)
     shortLength : (int) Short length
     longLength : (int) Long length
     maType : (int) Type of Moving Average for TSI
     almaOffset : (float) Offset for Arnaud Legoux Moving Average
     almaSigma : (float) Sigma for Arnaud Legoux Moving Average
     lsmaOffSet : (int) Offset for Least Squares Moving Average
  Returns: (float) TSI
 smi(sourceTSI, shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal) 
  SMI (Stochastic Momentum Index). A TSI (True Strengh Index) plus a signal line.
  Parameters:
     sourceTSI : (float) Source of series for TSI (close, high, low, etc.)
     shortLengthTSI : (int) Short length for TSI
     longLengthTSI : (int) Long length for TSI
     maTypeTSI : (int) Type of Moving Average for Signal of TSI
     almaOffsetTSI : (float) Offset for Arnaud Legoux Moving Average
     almaSigmaTSI : (float) Sigma for Arnaud Legoux Moving Average
     lsmaOffSetTSI : (int) Offset for Least Squares Moving Average
     maTypeSignal 
     smoothingLengthSignal 
     almaOffsetSignal 
     almaSigmaSignal 
     lsmaOffSetSignal 
  Returns:   A tuple with TSI, signal of TSI and histogram of difference
 wpr(source, length) 
  Williams R% (Williams Percent Range). Compares the current price of an asset to its highest high and lowest low over a specified time period.
  Parameters:
     source : (float) Source of series (close, high, low, etc.)
     length : (int) Period of loopback
  Returns: (float) Series of Williams R%
 cci(source, length, maType, almaOffset, almaSigma, lsmaOffSet) 
  CCI (Commodity Channel Index). Measures the relationship between an asset's current price and its moving average.
  Parameters:
     source : (float) Source of series (close, high, low, etc.)
     length : (int) Period of loopback
     maType : (int) Type of Moving Average
     almaOffset : (float) Offset for Arnaud Legoux Moving Average
     almaSigma : (float) Sigma for Arnaud Legoux Moving Average
     lsmaOffSet : (int) Offset for Least Squares Moving Average
  Returns: (float) Series of CCI
 ultimateOscillator(fastLength, middleLength, slowLength) 
  UO (Ultimate Oscilator). Combines three different time periods to help identify possible reversal points.
  Parameters:
     fastLength : (int) Fast period of loopback
     middleLength : (int) Middle period of loopback
     slowLength : (int) Slow period of loopback
  Returns: (float) Series of Ultimate Oscilator
 ultimateOscillator(source, fastLength, middleLength, slowLength) 
  UO (Ultimate Oscilator). Customized source. Combines three different time periods to help identify possible reversal points.
  Parameters:
     source : (float) Source of series (close, high, low, etc.)
     fastLength : (int) Fast period of loopback
     middleLength : (int) Middle period of loopback
     slowLength : (int) Slow period of loopback
  Returns: (float) Series of Ultimate Oscilator
 macd(source, fastLength, slowLength, signalLength, maTypeFast, maTypeSlow, maTypeMACD, almaOffset, almaSigma, lsmaOffSet) 
  MACD (Moving Average Convergence/Divergence). Shows the difference between short-term and long-term exponential moving averages.
  Parameters:
     source : (float) Source of series (close, high, low, etc.)
     fastLength : (int) Period for fast moving average
     slowLength : (int) Period for slow moving average
     signalLength : (int) Signal length
     maTypeFast : (int) Type of fast moving average
     maTypeSlow : (int) Type of slow moving average
     maTypeMACD : (int) Type of MACD moving average
     almaOffset : (float) Offset for Arnaud Legoux Moving Average
     almaSigma : (float) Sigma for Arnaud Legoux Moving Average
     lsmaOffSet : (int) Offset for Least Squares Moving Average
  Returns:   A tuple with MACD, Signal, and Histgram
 fisher(length) 
  Fisher Transform. Normalize prices into a Gaussian normal distribution.
  Parameters:
     length 
  Returns:   A tuple with Fisher Transform and signal
 fisher(source, length) 
  Fisher Transform. Customized source. Normalize prices into a Gaussian normal distribution.
  Parameters:
     source : (float) Source of series (close, high, low, etc.)
     length 
  Returns:   A tuple with Fisher Transform and signal
 inverseFisher(source, length, subtrahend, denominator) 
  Inverse Fisher Transform.
Transform the values of the Fisher Transform into a smaller and more easily interpretable scale is 
through the application of an inverse transformation to the hyperbolic tangent function. 
This transformation takes the values of the FT, which range from -infinity to +infinity, 
to a scale limited between -1 and +1, allowing them to be more easily visualized and compared.
  Parameters:
     source : (float) Source of series (close, high, low, etc.)
     length : (int) Period for loopback
     subtrahend : (int) Denominator. Useful in unbounded indicators. For example, in CCI.
     denominator 
  Returns: (float) Series of Inverse Fisher Transform
 premierStoch(length, smoothlen) 
  Premier Stochastic Oscillator (PSO).
Normalizes the standard stochastic oscillator by applying a five-period double exponential smoothing 
average of the %K value, resulting in a symmetric scale of 1 to -1.
  Parameters:
     length : (int) Period for loopback
     smoothlen : (int) Period for smoothing
  Returns: (float) Series of PSO
 premierStoch(source, smoothlen, subtrahend, denominator) 
  Premier Stochastic Oscillator (PSO) of custom source.
Normalizes the source by applying a five-period double exponential smoothing average.
  Parameters:
     source : (float) Source of series (close, high, low, etc.)
     smoothlen : (int) Period for smoothing
     subtrahend : (int) Denominator. Useful in unbounded indicators. For example, in CCI.
     denominator 
  Returns: (float) Series of PSO
 stochRsi(sourceRSI, lengthRSI, kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD) 
  Parameters:
     sourceRSI 
     lengthRSI 
     kLength 
     kSmoothing 
     dSmoothing 
     maTypeK 
     maTypeD 
     almaOffsetKD 
     almaSigmaKD 
     lsmaOffSetKD 
 stochRoc(sourceROC, lengthROC, kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD) 
  Parameters:
     sourceROC 
     lengthROC 
     kLength 
     kSmoothing 
     dSmoothing 
     maTypeK 
     maTypeD 
     almaOffsetKD 
     almaSigmaKD 
     lsmaOffSetKD 
 stochUO(fastLength, middleLength, slowLength, kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD) 
  Parameters:
     fastLength 
     middleLength 
     slowLength 
     kLength 
     kSmoothing 
     dSmoothing 
     maTypeK 
     maTypeD 
     almaOffsetKD 
     almaSigmaKD 
     lsmaOffSetKD 
 stochTSI(source, shortLength, longLength, maType, almaOffset, almaSigma, lsmaOffSet, kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD) 
  Parameters:
     source 
     shortLength 
     longLength 
     maType 
     almaOffset 
     almaSigma 
     lsmaOffSet 
     kLength 
     kSmoothing 
     dSmoothing 
     maTypeK 
     maTypeD 
     almaOffsetKD 
     almaSigmaKD 
     lsmaOffSetKD 
 stochWPR(source, length, kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD) 
  Parameters:
     source 
     length 
     kLength 
     kSmoothing 
     dSmoothing 
     maTypeK 
     maTypeD 
     almaOffsetKD 
     almaSigmaKD 
     lsmaOffSetKD 
 stochCCI(source, length, maType, almaOffset, almaSigma, lsmaOffSet, kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD) 
  Parameters:
     source 
     length 
     maType 
     almaOffset 
     almaSigma 
     lsmaOffSet 
     kLength 
     kSmoothing 
     dSmoothing 
     maTypeK 
     maTypeD 
     almaOffsetKD 
     almaSigmaKD 
     lsmaOffSetKD 
 stochMACD(source, fastLength, slowLength, signalLength, maTypeFast, maTypeSlow, maTypeMACD, almaOffset, almaSigma, lsmaOffSet, kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD) 
  Parameters:
     source 
     fastLength 
     slowLength 
     signalLength 
     maTypeFast 
     maTypeSlow 
     maTypeMACD 
     almaOffset 
     almaSigma 
     lsmaOffSet 
     kLength 
     kSmoothing 
     dSmoothing 
     maTypeK 
     maTypeD 
     almaOffsetKD 
     almaSigmaKD 
     lsmaOffSetKD 
 stochFT(length, kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD) 
  Parameters:
     length 
     kLength 
     kSmoothing 
     dSmoothing 
     maTypeK 
     maTypeD 
     almaOffsetKD 
     almaSigmaKD 
     lsmaOffSetKD 
 stochVolume(kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD) 
  Parameters:
     kLength 
     kSmoothing 
     dSmoothing 
     maTypeK 
     maTypeD 
     almaOffsetKD 
     almaSigmaKD 
     lsmaOffSetKD 
 stochMFI(source, length, kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD) 
  Parameters:
     source 
     length 
     kLength 
     kSmoothing 
     dSmoothing 
     maTypeK 
     maTypeD 
     almaOffsetKD 
     almaSigmaKD 
     lsmaOffSetKD 
 stochOBV(source, kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD) 
  Parameters:
     source 
     kLength 
     kSmoothing 
     dSmoothing 
     maTypeK 
     maTypeD 
     almaOffsetKD 
     almaSigmaKD 
     lsmaOffSetKD 
 stochPVI(source, kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD) 
  Parameters:
     source 
     kLength 
     kSmoothing 
     dSmoothing 
     maTypeK 
     maTypeD 
     almaOffsetKD 
     almaSigmaKD 
     lsmaOffSetKD 
 stochNVI(source, kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD) 
  Parameters:
     source 
     kLength 
     kSmoothing 
     dSmoothing 
     maTypeK 
     maTypeD 
     almaOffsetKD 
     almaSigmaKD 
     lsmaOffSetKD 
 stochPVT(source, kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD) 
  Parameters:
     source 
     kLength 
     kSmoothing 
     dSmoothing 
     maTypeK 
     maTypeD 
     almaOffsetKD 
     almaSigmaKD 
     lsmaOffSetKD 
 stochVO(shortLen, longLen, maType, almaOffset, almaSigma, lsmaOffSet, kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD) 
  Parameters:
     shortLen 
     longLen 
     maType 
     almaOffset 
     almaSigma 
     lsmaOffSet 
     kLength 
     kSmoothing 
     dSmoothing 
     maTypeK 
     maTypeD 
     almaOffsetKD 
     almaSigmaKD 
     lsmaOffSetKD 
 stochVROC(length, kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD) 
  Parameters:
     length 
     kLength 
     kSmoothing 
     dSmoothing 
     maTypeK 
     maTypeD 
     almaOffsetKD 
     almaSigmaKD 
     lsmaOffSetKD 
 iftRSI(sourceRSI, lengthRSI, lengthIFT) 
  Parameters:
     sourceRSI 
     lengthRSI 
     lengthIFT 
 iftROC(sourceROC, lengthROC, lengthIFT) 
  Parameters:
     sourceROC 
     lengthROC 
     lengthIFT 
 iftUO(fastLength, middleLength, slowLength, lengthIFT) 
  Parameters:
     fastLength 
     middleLength 
     slowLength 
     lengthIFT 
 iftStoch(kLength, kSmoothing, dSmoothing, maTypeK, maTypeD, almaOffsetKD, almaSigmaKD, lsmaOffSetKD, lengthIFT) 
  Parameters:
     kLength 
     kSmoothing 
     dSmoothing 
     maTypeK 
     maTypeD 
     almaOffsetKD 
     almaSigmaKD 
     lsmaOffSetKD 
     lengthIFT 
 iftTSI(source, shortLength, longLength, maType, almaOffset, almaSigma, lsmaOffSet, lengthIFT) 
  Parameters:
     source 
     shortLength 
     longLength 
     maType 
     almaOffset 
     almaSigma 
     lsmaOffSet 
     lengthIFT 
 iftCCI(source, length, maType, almaOffset, almaSigma, lsmaOffSet, lengthIFT) 
  Parameters:
     source 
     length 
     maType 
     almaOffset 
     almaSigma 
     lsmaOffSet 
     lengthIFT 
 iftFisher(length, lengthIFT) 
  Parameters:
     length 
     lengthIFT 
 iftMACD(source, fastLength, slowLength, signalLength, maTypeFast, maTypeSlow, maTypeMACD, almaOffset, almaSigma, lsmaOffSet, lengthIFT) 
  Parameters:
     source 
     fastLength 
     slowLength 
     signalLength 
     maTypeFast 
     maTypeSlow 
     maTypeMACD 
     almaOffset 
     almaSigma 
     lsmaOffSet 
     lengthIFT 
 iftWPR(source, length, lengthIFT) 
  Parameters:
     source 
     length 
     lengthIFT 
 iftMFI(source, length, lengthIFT) 
  Parameters:
     source 
     length 
     lengthIFT 
 iftCMF(length, lengthIFT) 
  Parameters:
     length 
     lengthIFT 
 iftVO(shortLen, longLen, maType, almaOffset, almaSigma, lsmaOffSet, lengthIFT) 
  Parameters:
     shortLen 
     longLen 
     maType 
     almaOffset 
     almaSigma 
     lsmaOffSet 
     lengthIFT 
 iftVROC(length, lengthIFT) 
  Parameters:
     length 
     lengthIFT 
 smiRSI(source, length, shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal) 
  Parameters:
     source 
     length 
     shortLengthTSI 
     longLengthTSI 
     maTypeTSI 
     almaOffsetTSI 
     almaSigmaTSI 
     lsmaOffSetTSI 
     maTypeSignal 
     smoothingLengthSignal 
     almaOffsetSignal 
     almaSigmaSignal 
     lsmaOffSetSignal 
 smiROC(source, length, shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal) 
  Parameters:
     source 
     length 
     shortLengthTSI 
     longLengthTSI 
     maTypeTSI 
     almaOffsetTSI 
     almaSigmaTSI 
     lsmaOffSetTSI 
     maTypeSignal 
     smoothingLengthSignal 
     almaOffsetSignal 
     almaSigmaSignal 
     lsmaOffSetSignal 
 smiVROC(length, shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal) 
  Parameters:
     length 
     shortLengthTSI 
     longLengthTSI 
     maTypeTSI 
     almaOffsetTSI 
     almaSigmaTSI 
     lsmaOffSetTSI 
     maTypeSignal 
     smoothingLengthSignal 
     almaOffsetSignal 
     almaSigmaSignal 
     lsmaOffSetSignal 
 smiWPR(source, length, shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal) 
  Parameters:
     source 
     length 
     shortLengthTSI 
     longLengthTSI 
     maTypeTSI 
     almaOffsetTSI 
     almaSigmaTSI 
     lsmaOffSetTSI 
     maTypeSignal 
     smoothingLengthSignal 
     almaOffsetSignal 
     almaSigmaSignal 
     lsmaOffSetSignal 
 smiFT(length, shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal) 
  Parameters:
     length 
     shortLengthTSI 
     longLengthTSI 
     maTypeTSI 
     almaOffsetTSI 
     almaSigmaTSI 
     lsmaOffSetTSI 
     maTypeSignal 
     smoothingLengthSignal 
     almaOffsetSignal 
     almaSigmaSignal 
     lsmaOffSetSignal 
 smiFT(source, length, shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal) 
  Parameters:
     source 
     length 
     shortLengthTSI 
     longLengthTSI 
     maTypeTSI 
     almaOffsetTSI 
     almaSigmaTSI 
     lsmaOffSetTSI 
     maTypeSignal 
     smoothingLengthSignal 
     almaOffsetSignal 
     almaSigmaSignal 
     lsmaOffSetSignal 
 smiCCI(source, length, maTypeCCI, almaOffsetCCI, almaSigmaCCI, lsmaOffSetCCI, shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal) 
  Parameters:
     source 
     length 
     maTypeCCI 
     almaOffsetCCI 
     almaSigmaCCI 
     lsmaOffSetCCI 
     shortLengthTSI 
     longLengthTSI 
     maTypeTSI 
     almaOffsetTSI 
     almaSigmaTSI 
     lsmaOffSetTSI 
     maTypeSignal 
     smoothingLengthSignal 
     almaOffsetSignal 
     almaSigmaSignal 
     lsmaOffSetSignal 
 smiUO(fastLength, middleLength, slowLength, shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal) 
  Parameters:
     fastLength 
     middleLength 
     slowLength 
     shortLengthTSI 
     longLengthTSI 
     maTypeTSI 
     almaOffsetTSI 
     almaSigmaTSI 
     lsmaOffSetTSI 
     maTypeSignal 
     smoothingLengthSignal 
     almaOffsetSignal 
     almaSigmaSignal 
     lsmaOffSetSignal 
 smiMACD(source, fastLength, slowLength, signalLength, maTypeFast, maTypeSlow, maTypeMACD, almaOffset, almaSigma, lsmaOffSet, shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal) 
  Parameters:
     source 
     fastLength 
     slowLength 
     signalLength 
     maTypeFast 
     maTypeSlow 
     maTypeMACD 
     almaOffset 
     almaSigma 
     lsmaOffSet 
     shortLengthTSI 
     longLengthTSI 
     maTypeTSI 
     almaOffsetTSI 
     almaSigmaTSI 
     lsmaOffSetTSI 
     maTypeSignal 
     smoothingLengthSignal 
     almaOffsetSignal 
     almaSigmaSignal 
     lsmaOffSetSignal 
 smiVol(shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal) 
  Parameters:
     shortLengthTSI 
     longLengthTSI 
     maTypeTSI 
     almaOffsetTSI 
     almaSigmaTSI 
     lsmaOffSetTSI 
     maTypeSignal 
     smoothingLengthSignal 
     almaOffsetSignal 
     almaSigmaSignal 
     lsmaOffSetSignal 
 smiMFI(source, length, shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal) 
  Parameters:
     source 
     length 
     shortLengthTSI 
     longLengthTSI 
     maTypeTSI 
     almaOffsetTSI 
     almaSigmaTSI 
     lsmaOffSetTSI 
     maTypeSignal 
     smoothingLengthSignal 
     almaOffsetSignal 
     almaSigmaSignal 
     lsmaOffSetSignal 
 smiCMF(length, shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal) 
  Parameters:
     length 
     shortLengthTSI 
     longLengthTSI 
     maTypeTSI 
     almaOffsetTSI 
     almaSigmaTSI 
     lsmaOffSetTSI 
     maTypeSignal 
     smoothingLengthSignal 
     almaOffsetSignal 
     almaSigmaSignal 
     lsmaOffSetSignal 
 smiOBV(source, shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal) 
  Parameters:
     source 
     shortLengthTSI 
     longLengthTSI 
     maTypeTSI 
     almaOffsetTSI 
     almaSigmaTSI 
     lsmaOffSetTSI 
     maTypeSignal 
     smoothingLengthSignal 
     almaOffsetSignal 
     almaSigmaSignal 
     lsmaOffSetSignal 
 smiPVT(source, shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal) 
  Parameters:
     source 
     shortLengthTSI 
     longLengthTSI 
     maTypeTSI 
     almaOffsetTSI 
     almaSigmaTSI 
     lsmaOffSetTSI 
     maTypeSignal 
     smoothingLengthSignal 
     almaOffsetSignal 
     almaSigmaSignal 
     lsmaOffSetSignal 
 smiVO(shortLen, longLen, maType, almaOffset, almaSigma, lsmaOffSet, shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal) 
  Parameters:
     shortLen 
     longLen 
     maType 
     almaOffset 
     almaSigma 
     lsmaOffSet 
     shortLengthTSI 
     longLengthTSI 
     maTypeTSI 
     almaOffsetTSI 
     almaSigmaTSI 
     lsmaOffSetTSI 
     maTypeSignal 
     smoothingLengthSignal 
     almaOffsetSignal 
     almaSigmaSignal 
     lsmaOffSetSignal 
 smiPVI(source, shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal) 
  Parameters:
     source 
     shortLengthTSI 
     longLengthTSI 
     maTypeTSI 
     almaOffsetTSI 
     almaSigmaTSI 
     lsmaOffSetTSI 
     maTypeSignal 
     smoothingLengthSignal 
     almaOffsetSignal 
     almaSigmaSignal 
     lsmaOffSetSignal 
 smiNVI(source, shortLengthTSI, longLengthTSI, maTypeTSI, almaOffsetTSI, almaSigmaTSI, lsmaOffSetTSI, maTypeSignal, smoothingLengthSignal, almaOffsetSignal, almaSigmaSignal, lsmaOffSetSignal) 
  Parameters:
     source 
     shortLengthTSI 
     longLengthTSI 
     maTypeTSI 
     almaOffsetTSI 
     almaSigmaTSI 
     lsmaOffSetTSI 
     maTypeSignal 
     smoothingLengthSignal 
     almaOffsetSignal 
     almaSigmaSignal 
     lsmaOffSetSignal 
 rsiVolume(length) 
  Parameters:
     length 
 rsiMA(sourceMA, lengthMA, maType, almaOffset, almaSigma, lsmaOffSet, lengthRSI) 
  Parameters:
     sourceMA 
     lengthMA 
     maType 
     almaOffset 
     almaSigma 
     lsmaOffSet 
     lengthRSI
Bar metrics / quantifytools— Overview  
Rather than eyeball evaluating bullishness/bearishness in any given bar, bar metrics allow a quantified approach using three basic fundamental data points: relative close, relative volatility and relative volume. These data points are visualized in a discreet data dashboard form, next to all real-time bars. Each value also has a dot in front, representing color coded extremes in the values.
Relative close represents position of bar's close relative to high and low, high of bar being 100% and low of bar being 0%. Relative close indicates strength of bulls/bears in a given bar, the higher the better for bulls, the lower the better for bears. Relative volatility (bar range, high - low) and relative volume are presented in a form of a multiplier, relative to their respective moving averages (SMA 20). A value of 1x indicates volume/volatility being on par with moving average, 2x indicates volume/volatility being twice as much as moving average and so on. Relative volume and volatility can be used for measuring general market participant interest, the "weight of the bar" as it were.
 — Features 
Users can gauge past bar metrics using lookback via input menu. Past bars, especially recent ones, are helpful for giving context for current bar metrics. Lookback bars are highlighted on the chart using a yellow box and metrics presented on the data dashboard with lookback symbols:
  
To inspect bar metric data and its implications, users can highlight bars with specified bracket values for each metric:
  
When bar highlighter is toggled on and desired bar metric values set, alert for the specified combination can be toggled on via alert menu. Note that bar highlighter must be enabled in order for alerts to function.
 — Visuals 
Bar metric dots are gradient colored the following way:
Relative volatility & volume
0x -> 1x / Neutral (white) -> Light (yellow)
1x -> 1.7x / Light (yellow) -> Medium (orange)
1.7x -> 2.4x / Medium (orange) -> Heavy (red)
Relative close
0% -> 25% / Heavy bearish (red) -> Light bearish (dark red)
25% -> 45% / Light bearish (dark red) -> Neutral (white)
45% - 55% / Neutral (white)
55% -> 75% / Neutral (white) -> Light bullish (dark green) 
75% -> 100% / Light bullish (dark green) -> Heavy bullish (green)
All colors can be adjusted via input menu. Label size, label distance from bar (offset) and text format (regular/stealth) can be adjusted via input menu as well:
  
 — Practical guide  
As interpretation of bar metrics is highly contextual, it is especially important to use other means in conjunction with the metrics. Levels, oscillators, moving averages, whatever you have found useful for your process. In short, relative close indicates directional bias and relative volume/volatility indicates "weight" of directional bias. 
 General interpretation 
High relative close, low relative volume/volatility = mildly bullish, bias up/consolidation
High relative close, medium relative volume/volatility = bullish, bias up
High relative close, high relative volume/volatility = exuberantly bullish, bias up/down depending on context
Medium relative close, low relative volume/volatility = noise, no bias
Medium relative close, medium to high relative volume/volatility = indecision, further evidence needed to evaluate bias
Low relative close, low relative volume/volatility = mildly bearish, bias down/consolidation
Low relative close, medium relative volume/volatility = bearish, bias down
Low relative close, high relative volume/volatility = exuberantly bearish, bias down/up depending on context
 Nuances & considerations 
As to relative close, it's important to note that each bar is a trading range when viewed on a lower timeframe, ES 1W vs. ES 4H:
  
When relative close is high, bulls were able to push price to range high by the time of close. When relative close is low, bears were able to push price to range low by the time of close. In other words, bulls/bears were able to gain the upper hand over a given trading range, hinting strength for the side that made the final push. When relative close is around middle range (40-60%), it can be said neither side is clearly dominating the range, hinting neutral/indecision bias from a relative close perspective.
As to relative volume/volatility, low values (less than ~0.7x) imply bar has low market participant interest and therefore is likely insignificant, as it is "lacking weight". Values close to or above 1x imply meaningful market participant interest, whereas values well above 1x (greater than ~1.3x) imply exuberance. This exuberance can manifest as initiation (beginning of a trend) or as exhaustion (end of a trend):
  
 
AbdulLibraryLibrary   "AbdulLibrary" 
The library consists of three sections:
 
   Technical Analysis Functions  -  A collection of tools commonly used by day traders 
   Trading Setup Filters Functions  -  A number of filters that help day traders to screen trading signals 
   Candlestick Pattern Detection Functions  -  To detect different candlestick patterns that are used in day trading setups 
 
Note that this would have been possible without the help of @ZenAndTheArtOfTrading as I build-up this library after completing his pine script mastery course so big thanks to him
 The content of the library are:- 
 fibLevels(preDayClose, preDayHigh, preDayLow)  Calculates Daily Pivot Point and Fibonacci Key Levels
  Parameters:
     preDayClose : The previous day candle close
     preDayHigh : The previous day candle high
     preDayLow : The previous day candle low
  Returns: Returns Daily Pivot Point and Fibonacci Key Levels as a tuple
 bullishFib(canHigh, canLow, fibLevel)  Calculates Fibonacci Levels in Bullish move
  Parameters:
     canHigh : The high of the move
     canLow : The low of the move
     fibLevel : The Fib level as % you want to calculate
  Returns: Returns The Fib level for the Bullish move
 bearishFib(canHigh, canLow, fibLevel)  Calculates Fibonacci Levels in Bearish move
  Parameters:
     canHigh : The high of the move
     canLow : The low of the move
     fibLevel : The Fib level as % you want to calculate
  Returns: Returns The Fib level for the Bearish move
 getCandleSize()  Calculates the size of candle (high - low) in points
  Returns: Returns candle size in points
 getCandleBodySize()  Calculates the size of candle (close - open) in points
  Returns: Returns candle body size in points
 getHighWickSize()  Calculates the high wick size of candle in points
  Returns: Returns The high wick size of candle in points
 getLowWickSize()  Calculates the low wick size of candle in points
  Returns: Returns The low wick size of candle in points
 getBodyPercentage()  Calculates the candle body size as % of overall candle size
  Returns: Returns The candle body size as % of overall candle size
 isSwingHigh(period)  Checks if the price has created new swing high over a period of time
  Parameters:
     period : The lookback time we want to check for swing high
  Returns: Returns True if the current candle or the previous candle is a swing high
 isSwingLow(period)  Checks if the price has created new swing low over a period of time
  Parameters:
     period : The lookback time we want to check for swing low
  Returns: Returns True if the current candle or the previous candle is a swing low
 isDojiSwingHigh(period)  Checks if a doji is a swing high over a period of time
  Parameters:
     period : The lookback time we want to check for swing high
  Returns: Returns True if the doji is a swing high
 isDojiSwingLow(period)  Checks if a doji is a swing low over a period of time
  Parameters:
     period : The lookback time we want to check for swing low
  Returns: Returns True if the doji is a swing low
 isBigBody(atrFilter, atr, candleBodySize, multiplier)  Checks if a candle has big body compared to ATR
  Parameters:
     atrFilter : Check if user wants to use ATR to filter candle-setup signals
     atr : The ATR value to be used to compare candle body size
     candleBodySize : The candle body size 
     multiplier : The multiplier to be used to compare candle body size
  Returns: Returns Boolean true if the candle setup is big
 isSmallBody(atrFilter, atr, candleBodySize, multiplier)  Checks if a candle has small body compared to ATR
  Parameters:
     atrFilter : Check if user wants to use ATR to filter candle-setup signals
     atr : The ATR value to be used to compare candle body size
     candleBodySize : The candle body size 
     multiplier : The multiplier to be used to compare candle body size
  Returns: Returns Boolean true if the candle setup is small
 isHammer(fibLevel, colorMatch)  Checks if a candle is a hammer based on user input parameters and candle conditions
  Parameters:
     fibLevel : Fib level to base candle body on
     colorMatch : Checks if user needs for the candel to be green
  Returns: Returns Boolean -  True if the candle setup is hammer
 isShootingStar(fibLevel, colorMatch)  Checks if a candle is a shooting star based on user input parameters and candle conditions
  Parameters:
     fibLevel : Fib level to base candle body on
     colorMatch : Checks if user needs for the candel to be red
  Returns: Returns Boolean -  True if the candle setup is star
 isBullEngCan(allowance, period)  Check if a candle is a bullish engulfing candle
  Parameters:
     allowance : How many points the candle open is allowed to be off (To allow for gaps)
     period : The lookback period for swing low check
  Returns: Boolean - True only if the candle is a bullish engulfing candle
 isBearEngCan(allowance, period)  Check if a candle is a bearish engulfing candle
  Parameters:
     allowance : How many points the candle open is allowed to be off (To allow for gaps)
     period : The lookback period for swing high check
  Returns: Boolean - True only if the candle is a bearish engulfing candle
 isBullDoji(maxSize, wickLimit, colorFilter)  Check if a candle is a bullish doji candle
  Parameters:
     maxSize : Maximum candle body size as % of total candle size to be considered as doji
     wickLimit : Maximum wick size of one wick compared to the other wick
     colorFilter : Checks if the doji is green
  Returns: Boolean - True if the candle is a bullish doji
 isBearDoji(maxSize, wickLimit, colorFilter)  Check if a candle is a bearish doji candle
  Parameters:
     maxSize : Maximum candle body size as % of total candle size to be considered as doji
     wickLimit : Maximum wick size of one wick compared to the other wick
     colorFilter : Checks if the doji is red
  Returns: Boolean - True if the candle is a bearish doji
 isBullOutBar()  Check if a candle is a bullish outside bar
  Returns: Boolean - True if the candle is a bullish outside bar
 isInsideBar()  Check if a candle is an inside bar
  Returns: Returns Boolean - True if a candle is an inside bar
coates moving averages (cma)This indicator uses three moving averages:
2 period low simple ma
2 period high simple ma
9 period least squares ma 
The trend is determined by the angle of the moving averages, current close relative the the 9 least squares ma (lsm) and the current close relative to the prior two periods high and low. 
When there are consecutive closes inside the prior two candles high and low then a range is signaled:
 
In ranges the buy zone is between the lowest low and the lowest close of the current range. The sell zone is between the highest high and the highest close. The zones are adjusted as long as the new close is within the prior two candles range:
 
When price closes above the 2 high ma and the 9 lsm then a bull trend is signaled if all moving averages are angled upward (as seen at #4 in the chart above and #1 the chart below ). If the 9 lsm and / or the 2 low ma continue to angle downward, following a close above the 2 high ma and 9 lsm, then a prolonged range or reversal is expected (#2 in the chart below): 
 
During a bull trend the buy zone is between the 2 low ma and the 9 lsm. The profit target is the 2 high ma: 
 
During dip buying opportunities price should resist closing below the 9 lsm. If there is one close below the 9 lsm then it is a canary in the coalmine that tells us to proceed with caution. This will often signal a range, based on the conditions outlined  above. To avoid a prolonged range, or reversal, price needs to immediately react in the direction of the prevailing trend:
 
 
If the moving averages are angled down and the most recent close is below the 2 low ma and 9 lsm then trend is fully bearish: 
 
During a bear trend the short zone is between the 2 high ma and 9 lsm. The profit target is the 2 low ma: 
 
When the 2 high ma angles down and the 2 low ma angles up while price closes inside both mas then it indicates a cma squeeze: 
 
Volatility is expected in the direction of the breakout following the squeeze. In this situation traps / shakeouts are common. If there is a wick outside the cma, with a close inside, then it indicates a trap / shakeout. If there is a close outside the 2 high / low ma then it signals a breakout. 
A trend is considered balanced when the 9 lsm is roughly equidistant from the 2 low and 2 high mas. If the 9 lsm crosses the 2 high or 2 low ma then it signals exhaustion / imbalance. 
 
For a stop loss I use the prior three periods low, for bull trends, and the prior three periods high for bear trends. I would expect other reliable stops, such as the parabolic sar or bill williams fractal, to be effective as well. The default moving averages should be very effective on all timeframes and assets classes, however this indicator was developed for bitcoin with a focus on higher timeframes such as the 4h, daily and weekly. 
 As with any other technical indicator there will be bad signals. Proceed with caution and never risk more than you are willing to lose.  
Dekidaka-Ashi - Candles And Volume Teaming Up (Again)The introduction of candlestick methods for market price data visualization might be one of the most important events in the history of technical analysis, as it totally changed the way to see a trading chart. Candlestick charts are extremely efficient, as they allow the trader to visualize the opening, high, low and closing price (OHLC) each at the same time, something impossible with a traditional line chart. Candlesticks are also cleaner than bars charts and make a more efficient use of space. Japanese peoples are always better than everyone at an incredible amount of stuff, look at what they made, the candlesticks/renko/kagi/heikin-ashi charts, the Ichimoku, manga, ecchi...
However classical candlesticks only include historical market  price  data, and won't include other type of data such as volume, which is considered by many investors a key information toward effective financial forecasting as volume is an indicator of trading activity. In order to tackle to this problem solutions where proposed, the most common one being to adapt the width of the candle based on the amount of volume, this method is the most commonly accepted one when it comes to visualizing both volume and OHLC data using candlesticks.
Now why proposing an additional tool for volume data visualization ? Because the classical width approach don't provide usable data regarding volume (as the width is directly related to the volume data). Therefore a new trading tool based on candlesticks that allow the trader to gain access to information about the volume is proposed. The approach is based on rescaling the volume directly to the price without the direct use of user settings. We will also see that this tool allow to create support and resistances as well as providing signals based on a breakout methodology.
 Dekidaka-Ashi - Kakatte Koi Yo! 
"Dekidaka" (出来高) mean "Volume" in a financial context, while "Ashi" (足) mean "leg" or "bar". In general methods based on candlesticks will have "Ashi" in their name.
Now that the name of the indicator has been explained lets see how it works, the indicator should be overlayed directly to a candlestick chart. The proposed method don't alter the shape of the candlesticks and allow to visualize any information given by the candles. As you can see on the figure below the candle body of the proposed tool only return the border of the candle, this allow to show the high/low wick of the candle.
  
The body size of the candle is based on two things : the absolute close/open difference, and the volume, if the absolute close/open difference is high and the volume is high then the body of the candle will be clearly visible, if the volume is high but the absolute close/open difference is low, then the body will be less visible. This approach is used because of the rescaling method used, the volume is divided by the sum between the current volume value and the precedent volume value, this rescale the volume in a (0,1) range, this result is multiplied by the absolute close/open difference and added/subtracted to the high/low price. The original approach was based on normalization using the rolling maximum, but this approach would have led to repainting. 
You have access to certain settings that can help you obtain a better visualization, the first one being the body size setting, with higher values increasing the body amplitude.
  
In green body with size 2, in red with size 1. The smooth parameter will smooth the volume data before being used, this allow to create more visible bodies.
  
Here smooth = 100.
 Making Bands From The Dekidaka-Ashi 
This tool is made so it output two rescaled volume values, with the highest value being denoted as "Dekidaka-high" and the lowest one as "Dekidaka-low". In order to get bands we must use two moving averages, one using the Dekidaka-high as input and the other one using Dekidaka-low, the body size parameter should be fairly high, therefore i will hide the tool as it could cause trouble visualizing the bands.
  
Bands with both MA's of period 20 and the body size equal to 20. Larger periods of the MA's will require a larger amount of body size.
 Breakout Signals 
There is a wide variety of signals that can be made from candles, ones i personally like comes from the HA candles. The proposed tool is no exception and can produce a wide variety of signals. The signals generated are basic ones based on a breakout methodology, here is each signal with their associated label :
 
 Strong Bullish signal "⇈" : The high price cross the Dekidaka-high and the closing price is greater than the opening price
 Strong Bearish signal "⇊" : The low price cross the Dekidaka-low and the closing price is lower than the opening price
 Weak Bullish signal "↑" : The high price cross the Dekidaka-high and the closing price is lower than the opening price
 Weak Bearish signal "↓" : The low price cross the Dekidaka-low and the closing price is greater than the opening price
 Uncertain "↕" : The high price cross the Dekidaka-high and the low price cross the the Dekidaka-low
 
In order to see the signals on the chart check the "Show signals" option. Note that such signals are not based on an advanced study, and even if they are based on a breakout methodology we can see that volatile movement rarely produce signals, therefore signals mostly occur during low volume/volatility periods, which isn't necessarily a great thing.
  
 Conclusion 
A trading tool based on candlesticks that aim to include volume information has been presented and a brief methodology has been introduced. A study of the signals generated is required, however i'am not confident at all on their accuracy, i could work on that in the future. We have also seen how to make bands from the tool.
Candlesticks remain a beautiful charting technique that can provide an enormous amount of information to the trader, and even if the accuracy of patterns based on candlesticks is subject to debates, we can all agree that candlesticks will remain the most widely used type of financial chart. 
On a side note i mostly use a dark color for a bullish candle, and a light gray for a bearish candle, with the border color being of the same color as the bullish candle. This is in my opinion the best setup for a candlestick chart, as candles using the traditional green/red can kill the eyes and because this setup allow to apply a wide variety of colors to the plot of overlayed indicators without the fear of causing conflict with the candles color.
Thanks for reading ! :3 Nya
 A Word 
This morning i received some hateful messages on twitter, the users behind them certainly coming from tradingview, so lets be clear, i know i'am not the most liked person in this community, i know that perfectly, but no one merit to be receive hateful messages. I'am not responsible for the losses of peoples using my indicators, nor is tradingview, using technical indicators does not guarantee long term returns, your ability to be profitable will mostly be based on the quality and quantity of knowledge you have.
Opening Range Breakout with Multi-Timeframe Liquidity]═══════════════════════════════════════
 OPENING RANGE BREAKOUT WITH MULTI-TIMEFRAME LIQUIDITY 
═══════════════════════════════════════
A professional Opening Range Breakout (ORB) indicator enhanced with multi-timeframe liquidity detection, trading session visualization, volume analysis, and trend confirmation tools. Designed for intraday trading with comprehensive alert system.
───────────────────────────────────────
 WHAT THIS INDICATOR DOES 
───────────────────────────────────────
This indicator combines multiple trading concepts:
- Opening Range Breakout (ORB) - Customizable time period detection with automatic high/low identification
- Multi-Timeframe Liquidity - HTF (Higher Timeframe) and LTF (Lower Timeframe) key level detection
- Trading Sessions - Tokyo, London, New York, and Sydney session visualization
- Volume Analysis - Volume spike detection and strength measurement
- Multi-Timeframe Confirmation - Trend bias from higher timeframes
- EMA Integration - Trend filter and dynamic support/resistance
- Smart Alerts - Quality-filtered breakout notifications
───────────────────────────────────────
 HOW IT WORKS 
───────────────────────────────────────
 OPENING RANGE BREAKOUT (ORB): 
Concept:
The Opening Range is a period at the start of a trading session where price establishes an initial high and low. Breakouts beyond this range often indicate the direction of the day's trend.
Detection Method:
- Default: 15-minute opening range (configurable)
- Custom Range: Set specific session times with timezone support
- Automatically identifies ORH (Opening Range High) and ORL (Opening Range Low)
- Tracks ORB mid-point for reference
Range Establishment:
1. Session starts (or custom time begins)
2. Tracks highest high and lowest low during the period
3. Range confirmed at end of opening period
4. Levels extend throughout the session
Breakout Detection:
- Bullish Breakout: Close above ORH
- Bearish Breakout: Close below ORL
- Mid-point acts as bias indicator
Visual Display:
- Shaded box during range formation
- Horizontal lines for ORH, ORL, and mid-point
- Labels showing level values
- Color-coded fills based on selected method
Fill Color Methods:
1. Session Comparison:
   - Green: Current OR mid > Previous OR mid
   - Red: Current OR mid < Previous OR mid
   - Gray: Equal or first session
   - Shows day-over-day momentum
2. Breakout Direction (Recommended):
   - Green: Price currently above ORH (bullish breakout)
   - Red: Price currently below ORL (bearish breakout)
   - Gray: Price inside range (no breakout)
   - Real-time breakout status
MULTI-TIMEFRAME LIQUIDITY:
Two-Tier System for comprehensive level identification:
HTF (Higher Timeframe) Key Liquidity:
- Default: 4H timeframe (configurable to Daily, Weekly)
- Identifies major institutional levels
- Uses pivot detection with adjustable parameters
- Suitable for swing highs/lows where large orders rest
LTF (Lower Timeframe) Key Liquidity:
- Default: 1H timeframe (configurable)
- Provides precision entry/exit levels
- Finer granularity for intraday trading
- Captures minor swing points
Calculation Method:
- Pivot high/low detection algorithm
- Configurable left bars (lookback) and right bars (confirmation)
- Timeframe multiplier for accurate multi-timeframe detection
- Automatic level extension
Mitigation System:
- Tracks when levels are swept (broken)
- Configurable mitigation type: Wick or Close-based
- Option to remove or show mitigated levels
- Display limit prevents chart clutter
Asset-Specific Optimization:
The indicator includes quick reference settings for different assets:
- Major Forex (EUR/USD, GBP/USD): Default settings optimal
- Crypto (BTC/ETH): Left=12, Right=4, Display=7
- Gold: HTF=1D, Left=20
 TRADING SESSIONS: 
Four Major Sessions with Full Customization:
Tokyo Session:
- Default: 04:00-13:00 UTC+4
- Asian trading hours
- Often sets daily range
London Session:
- Default: 11:00-20:00 UTC+4
- Highest liquidity period
- Major institutional activity
New York Session:
- Default: 16:00-01:00 UTC+4
- US market hours
- High-impact news events
Sydney Session:
- Default: 01:00-10:00 UTC+4
- Earliest Asian activity
- Lower volatility
Session Features:
- Shaded background boxes
- Session name labels
- Optional open/close lines
- Session high/low tracking with colored lines
- Each session has independent color settings
- Fully customizable times and timezones
VOLUME ANALYSIS:
Volume-Based Trade Confirmation:
Volume MA:
- Configurable period (default: 20)
- Establishes average volume baseline
- Used for spike detection
Volume Spike Detection:
- Identifies when volume exceeds MA * multiplier
- Default: 1.5x average volume
- Confirms breakout strength
Volume Strength Measurement:
- Calculates current volume as percentage of average
- Shows relative volume intensity
- Used in alert quality filtering
High Volume Bars:
- Identifies bars above 50th percentile
- Additional confirmation layer
- Indicates institutional participation
MULTI-TIMEFRAME CONFIRMATION:
Trend Bias from Higher Timeframes:
HTF 1 (Trend):
- Default: 1H timeframe
- Uses EMA to determine intermediate trend
- Compares current timeframe EMA to HTF EMA
HTF 2 (Bias):
- Default: 4H timeframe
- Uses 50 EMA for longer-term bias
- Confirms overall market direction
Bias Classifications:
- Bullish Bias: HTF close > HTF 50 EMA AND Current EMA > HTF1 EMA
- Bearish Bias: HTF close < HTF 50 EMA AND Current EMA < HTF1 EMA
- Neutral Bias: Mixed signals between timeframes
EMA Stack Analysis:
- Compares EMA alignment across timeframes
- +1: Bullish stack (lower TF EMA > higher TF EMA)
- -1: Bearish stack (lower TF EMA < higher TF EMA)
- 0: Neutral/crossed
Usage:
- Filters false breakouts
- Confirms trend direction
- Improves trade quality
 EMA INTEGRATION: 
Dynamic EMA for Trend Reference:
Features:
- Configurable period (default: 20)
- Customizable color and width
- Acts as dynamic support/resistance
- Trend filter for ORB trades
Application:
- Above EMA: Favor long breakouts
- Below EMA: Favor short breakouts
- EMA cross: Potential trend change
- Distance from EMA: Momentum gauge
SMART ALERT SYSTEM:
Quality-Filtered Breakout Notifications:
Alert Types:
1. Standard ORB Breakout
2. High Quality ORB Breakout
Quality Criteria:
- Volume Confirmation: Volume > 1.2x average
- MTF Confirmation: Bias aligned with breakout direction
Standard Alert:
- Basic breakout detection
- Price crosses ORH or ORL
- Icon: 🚀 (bullish) or 🔻 (bearish)
High Quality Alert:
- Both volume AND MTF confirmed
- Stronger probability setup
- Icon: 🚀⭐ (bullish) or 🔻⭐ (bearish)
Alert Information Includes:
- Alert quality rating
- Breakout level and current price
- Volume strength percentage (if enabled)
- MTF bias status (if enabled)
- Recommended action
One Alert Per Bar:
- Prevents alert spam
- Uses flag system to track sent alerts
- Resets on new ORB session
───────────────────────────────────────
 HOW TO USE 
───────────────────────────────────────
 OPENING RANGE SETUP: 
Basic Configuration:
1. Select time period for opening range (default: 15 minutes)
2. Choose fill color method (Breakout Direction recommended)
3. Enable historical data display if needed
Custom Range (Advanced):
1. Enable Custom Range toggle
2. Set specific session time (e.g., 0930-0945)
3. Select appropriate timezone
4. Useful for specific market opens (NYSE, LSE, etc.)
 LIQUIDITY LEVELS SETUP: 
Quick Configuration by Asset:
- Forex: Use default settings (Left=15, Right=5)
- Crypto: Set Left=12, Right=4, Display=7
- Gold: Set HTF=1D, Left=20
HTF Liquidity:
- Purpose: Major support/resistance levels
- Recommended: 4H for day trading, 1D for swing trading
- Use as profit targets or reversal zones
LTF Liquidity:
- Purpose: Entry/exit refinement
- Recommended: 1H for day trading, 4H for swing trading
- Use for position management
Mitigation Settings:
- Wick-based: More sensitive (default)
- Close-based: More conservative
- Remove or Show mitigated levels based on preference
TRADING SESSIONS SETUP:
Enable/Disable Sessions:
- Master toggle for all sessions
- Individual session controls
- Show/hide session names
Session High/Low Lines:
- Enable to see session extremes
- Each session has custom colors
- Useful for range trading
Customization:
- Adjust session times for your broker
- Set timezone to match your location
- Customize colors for visibility
 VOLUME ANALYSIS SETUP: 
Enable Volume Analysis:
1. Toggle on Volume Analysis
2. Set MA length (20 recommended)
3. Adjust spike multiplier (1.5 typical)
Usage:
- Confirm breakouts with volume
- Identify climactic moves
- Filter false signals
MULTI-TIMEFRAME SETUP:
HTF Selection:
- HTF 1 (Trend): 1H for day trading, 4H for swing
- HTF 2 (Bias): 4H for day trading, 1D for swing
Interpretation:
- Trade only with bias alignment
- Neutral bias: Be cautious
- Bias changes: Potential reversals
EMA SETUP:
Configuration:
- Period: 20 for responsive, 50 for smoother
- Color: Choose contrasting color
- Width: 1-2 for visibility
Usage:
- Filter trades: Long above, Short below
- Dynamic support/resistance reference
- Trend confirmation
ALERT SETUP:
TradingView Alert Creation:
1. Enable alerts in indicator settings
2. Enable ORB Breakout Alerts
3. Right-click chart → Add Alert
4. Select this indicator
5. Choose "Any alert() function call"
6. Configure delivery method (mobile, email, webhook)
Alert Filtering:
- All alerts include quality rating
- High Quality alerts = Volume + MTF confirmed
- Standard alerts = Basic breakout only
───────────────────────────────────────
 TRADING STRATEGIES 
───────────────────────────────────────
CLASSIC ORB STRATEGY:
Setup:
1. Wait for opening range to complete
2. Price breaks and closes above ORH or below ORL
3. Volume > average (if enabled)
4. MTF bias aligned (if enabled)
Entry:
- Bullish: Buy on break above ORH
- Bearish: Sell on break below ORL
- Consider retest entries for better risk/reward
Stop Loss:
- Bullish: Below ORL or range mid-point
- Bearish: Above ORH or range mid-point
- Adjust based on volatility
Targets:
- Initial: Range width extension (ORH + range width)
- Secondary: HTF liquidity levels
- Final: Session high/low or major support/resistance
ORB + LIQUIDITY CONFLUENCE:
Enhanced Setup:
1. Opening range established
2. HTF liquidity level near or beyond ORH/ORL
3. Breakout occurs with volume
4. Price targets the liquidity level
Entry:
- Enter on ORB breakout
- Target the HTF liquidity level
- Use LTF liquidity for position management
Management:
- Partial profits at ORB + range width
- Move stop to breakeven at LTF liquidity
- Final exit at HTF liquidity sweep
ORB REJECTION STRATEGY (Counter-Trend):
Setup:
1. Price breaks above ORH or below ORL
2. Weak volume (below average)
3. MTF bias opposite to breakout
4. Price closes back inside range
Entry:
- Failed bullish break: Short below ORH
- Failed bearish break: Long above ORL
Stop Loss:
- Beyond the failed breakout level
- Or beyond session extreme
Target:
- Opposite end of opening range
- Range mid-point for partial profit
SESSION-BASED ORB TRADING:
Tokyo Session:
- Typically narrower ranges
- Good for range trading
- Wait for London open breakout
London Session:
- Highest volume and volatility
- Strong ORB setups
- Major liquidity sweeps common
New York Session:
- Strong trending moves
- News-driven volatility
- Good for momentum trades
Sydney Session:
- Quieter conditions
- Suitable for range strategies
- Sets up Tokyo session
EMA-FILTERED ORB:
Rules:
- Only take bullish breaks if price > EMA
- Only take bearish breaks if price < EMA
- Ignore counter-trend breaks
Benefits:
- Reduces false signals
- Aligns with larger trend
- Improves win rate
───────────────────────────────────────
CONFIGURATION GUIDE
───────────────────────────────────────
OPENING RANGE SETTINGS:
Time Period:
- 15 min: Standard for most markets
- 30 min: Wider range, fewer breakouts
- 60 min: For slower markets or swing trades
Custom Range:
- Use for specific market opens
- NYSE: 0930-1000 EST
- LSE: 0800-0830 GMT
- Set timezone to match exchange
Historical Display:
- Enable: See all previous session data
- Disable: Cleaner chart, current session only
LIQUIDITY SETTINGS:
Left Bars (5-30):
- Lower: More frequent, sensitive levels
- Higher: Fewer, more significant levels
- Recommended: 15 for most markets
Right Bars (1-25):
- Confirmation period
- Higher: More reliable, less frequent
- Recommended: 5 for balance
Display Limit (1-20):
- Number of active levels shown
- Higher: More context, busier chart
- Recommended: 7 for clarity
Extension Options:
- Short: Levels visible near formation
- Current: Extended to current bar (recommended)
- Max: Extended indefinitely
VOLUME SETTINGS:
MA Length (5-50):
- Shorter: More responsive to spikes
- Longer: Smoother baseline
- Recommended: 20 for balance
Spike Multiplier (1.0-3.0):
- Lower: More sensitive spike detection
- Higher: Only extreme spikes
- Recommended: 1.5 for day trading
MULTI-TIMEFRAME SETTINGS:
HTF 1 (Trend):
- 5m chart: Use 15m or 1H
- 15m chart: Use 1H or 4H
- 1H chart: Use 4H or 1D
HTF 2 (Bias):
- One level higher than HTF 1
- Provides longer-term context
- Don't use same as HTF 1
EMA SETTINGS:
Length:
- 20: Responsive, more signals
- 50: Smoother, stronger filter
- 200: Long-term trend only
Style:
- Choose contrasting color
- Width 1-2 for visibility
- Match your trading style
───────────────────────────────────────
BEST PRACTICES
───────────────────────────────────────
Chart Timeframe Selection:
- ORB Trading: Use 5m or 15m charts
- Session Review: Use 1H or 4H charts
- Swing Trading: Use 1H or 4H charts
Quality Over Quantity:
- Wait for high-quality alerts (volume + MTF)
- Avoid trading every breakout
- Focus on confluence setups
Risk Management:
- Position size based on range width
- Wider ranges = smaller positions
- Use stop losses always
- Take partial profits at targets
Market Conditions:
- Best results in trending markets
- Reduce position size in choppy conditions
- Consider session overlaps for volatility
- Avoid trading near major news if inexperienced
Continuous Improvement:
- Track win rate by session
- Note which confluence factors work best
- Adjust settings based on market volatility
- Review performance weekly
───────────────────────────────────────
PERFORMANCE OPTIMIZATION
───────────────────────────────────────
This indicator is optimized with:
- max_bars_back declarations for efficient processing
- Conditional calculations based on enabled features
- Proper memory management for drawing objects
- Minimal recalculation on each bar
Best Practices:
- Disable unused features (sessions, MTF, volume)
- Limit historical display to reduce rendering
- Use appropriate timeframe for your strategy
- Clear old drawing objects periodically
───────────────────────────────────────
EDUCATIONAL DISCLAIMER
───────────────────────────────────────
This indicator combines established trading concepts:
- Opening Range Breakout theory (price action)
- Liquidity level detection (pivot analysis)
- Session-based trading (time-of-day patterns)
- Volume analysis (confirmation technique)
- Multi-timeframe analysis (trend alignment)
All calculations use standard technical analysis methods:
- Pivot high/low detection algorithms
- Moving averages for trend and volume
- Session time filtering
- Timeframe security functions
The indicator identifies potential trading setups but does not predict future price movements. Success requires proper application within a complete trading strategy including risk management, position sizing, and market context.
───────────────────────────────────────
USAGE DISCLAIMER
───────────────────────────────────────
This tool is for educational and analytical purposes. Opening Range Breakout trading involves substantial risk. The alert system and quality filters are designed to identify potential setups but do not guarantee profitability. Always conduct independent analysis, use proper risk management, and never risk capital you cannot afford to lose. Past performance does not indicate future results. Trading intraday breakouts requires experience and discipline.
───────────────────────────────────────
CREDITS & ATTRIBUTION
───────────────────────────────────────
ORIGINAL SOURCE:
This indicator builds upon concepts from LuxAlgo's-ORB
cd_correlation_analys_Cxcd_correlation_analys_Cx 
 General: 
This indicator is designed for correlation analysis by classifying stocks (487 in total) and indices (14 in total) traded on Borsa İstanbul (BIST) on a sectoral basis.
Tradingview's sector classifications (20) have been strictly adhered to for sector grouping.
Depending on user preference, the analysis can be performed within sectors, between sectors, or manually (single asset).
Let me express my gratitude to the code author, @fikira, beforehand; you will find the reason for my thanks in the context.
 Details: 
First, let's briefly mention how this indicator could have been prepared using the classic method before going into details.
Classically, assets could be divided into groups of forty (40), and the analysis could be performed using the built-in function:
ta.correlation(source1, source2, length) → series float.
I chose sectoral classification because I believe there would be a higher probability of assets moving together, rather than using fixed-number classes.
In this case, 21 arrays were formed with the following number of elements: 
(3, 11, 21, 60, 29, 20, 12, 3, 31, 5, 10, 11, 6, 48, 73, 62, 16, 19, 13, 34 and indices (14)). 
However, you might have noticed that some arrays have more than 40 elements. This is exactly where @Fikira's indicator came to the rescue. When I examined their excellent indicator, I saw that it could process 120 assets in a single operation. (I believe this was the first limit overrun; thanks again.)
It was amazing to see that data for 3 pairs could be called in a single request using a special method.
You can find the details here: 
When I adapted it for BIST, I found it sufficient to call data for 2 pairs instead of 3 in a single go. Since asset prices are regular and have 2 decimal places, I used a fixed multiplier of $10^8$ and a fixed decimal count of 2 in Fikira's formulas.
With this method, the (high, low, open, close) values became accessible for each asset.
The summary up to this point is that instead of the ready-made formula + groups of 40, I used variable-sized groups and the method I will detail now.
Correlation/harmony/co-movement between assets provides advantages to market participants. Coherent assets are expected to rise or fall simultaneously.
Therefore, to convert co-movement into a mathematical value, I defined the possible movements of the current candle relative to the previous candle bar over a certain period (user-defined). These are:
 Up  := high > high  and low > low 
 Down  := high < high  and low < low 
 Inside  := high <= high  and low >= low 
 Outside  := high >= high  and low <= low  and NOT Inside.
 Ignore  := high = low = open = close
If both assets performed the same movement, 1 was added to the tracking counter.
If (Up-Up), (Down-Down), (Inside-Inside), or (Outside-Outside), then counter := counter + 1.
If the period length is 100 and the counter is 75, it means there is 75% co-movement.
Corr = counter / period ($75/100$)
Average = ta.sma(Corr, 100) is obtained.
The highest coefficients recorded in the array are presented to the user in a table.
From the user menu options, the user can choose to compare:
•	With assets in its own sector
•	With assets in the selected sector
•	By activating the confirmation box and manually entering a single asset for comparison.
Table display options can be adjusted from the Settings tab.
  
In the attached examples:
Results for AKBNK stock from the Finance sector compared with GARAN stock from the same sector:
Timeframe: Daily, Period: 50 => Harmony 76% (They performed the same movement in 38 out of 50 bars)
Comment: Opposite movements at swing high and low levels may indicate a change in the direction of the price flow (SMT).
  
Looking at ASELS from the Electronic Technology sector over the last 30 daily candles, they performed the same movements by 40% with XU100, 73.3% (22/30) with XUTEK (Technology Index), and 86.9% according to the averages.
Comment: It is more appropriate to follow ASELS stock with XUTEK (Technology index) instead of the general index (XU100). Opposite movements at swing high and low levels may indicate a change in the direction of the price flow (SMT).
  
Again, when ASELS stock is taken on H1 instead of daily, and the length is 100 instead of 30, the harmony rate is seen to be 87%.
  
Please share your thoughts and criticisms regarding the indicator, which I prepared with a bit of an educational purpose specifically for BIST.
Happy trading.
Scalper Pro Pattern Recognition & Price ActionOVERVIEW
Scalper Pro is a comprehensive multi-timeframe trading indicator that combines Smart Money Concepts (SMC) with traditional technical analysis to provide scalpers and day traders with high-probability entry and exit signals. This indicator integrates multiple analytical frameworks into a unified visual system designed specifically for short-term trading strategies.
ORIGINALITY & PURPOSE
What Makes This Script Original
This script is not a simple mashup of existing indicators. Instead, it represents a carefully orchestrated integration of complementary analytical methods that work together to solve a specific problem: identifying high-probability scalping opportunities in volatile markets.
The unique value proposition:
Adaptive Trend Filtering System - Combines a customized SuperTrend algorithm with dual-period range filters (Cirrus Cloud) and Hull Moving Average trend cloud to create a three-layer trend confirmation system
Smart Money Concepts Integration - Incorporates institutional trading concepts (Order Blocks, Fair Value Gaps, Break of Structure) with retail technical indicators for a complete market structure view
Dynamic Risk Management - Automatically calculates stop-loss and take-profit levels based on ATR volatility, providing objective position sizing
ADX-Based Market Regime Detection - Identifies ranging vs. trending markets through ADX analysis with visual bar coloring to prevent whipsaws during consolidation
Why Combine These Specific Components
Each component addresses a specific weakness in scalping:
SuperTrend provides the primary directional bias but can generate false signals in ranging markets
Range Filters smooth out noise and confirm trend direction, reducing SuperTrend false positives
ADX Analysis prevents trading during low-volatility consolidation when most indicators fail
SMC Elements identify institutional activity zones where price is likely to react strongly
ATR-Based Risk Management adapts position sizing to current volatility conditions
The synergy creates a system where signals are only generated when multiple confirmation layers align, significantly reducing false signals common in single-indicator approaches.
HOW IT WORKS
Core Calculation Methodology
1. SuperTrend Signal Generation
The script uses a modified SuperTrend algorithm with the following calculation:
ATR = Average True Range (default: 10 periods)
Factor = 7 (default sensitivity multiplier)
Upper Band = Source + (Factor × ATR)
Lower Band = Source - (Factor × ATR)
Directional Logic:
When price crosses above SuperTrend → Bullish signal
When price crosses below SuperTrend → Bearish signal
SuperTrend value is plotted as dynamic support/resistance
Key Modification: The sensitivity parameter (nsensitivity * 7) allows users to adjust the aggressiveness of trend detection without changing the core ATR calculation.
2. Range Filter System (Cirrus Cloud)
The Range Filter uses a smoothed range calculation to filter out market noise:
Smooth Range Calculation:
WPER = (Period × 2) - 1
AVRNG = EMA(|Price - Price |, Period)
Smooth Range = EMA(AVRNG, WPER) × Multiplier
Two-Layer System:
Layer 1: 22-period with 6x multiplier (broader trend)
Layer 2: 15-period with 5x multiplier (tighter price action)
Visual Output: The space between these two filters is colored:
Green fill = Bullish trend (Layer 1 > Layer 2)
Red fill = Bearish trend (Layer 1 < Layer 2)
This creates a "cloud" that expands during strong trends and contracts during consolidation.
3. ADX Market Regime Detection
Calculation:
+DM = Positive Directional Movement
-DM = Negative Directional Movement
True Range = RMA of True Range (15 periods)
+DI = 100 × RMA(+DM, 15) / True Range
-DI = 100 × RMA(-DM, 15) / True Range
ADX = 100 × RMA(|+DI - -DI| / (+DI + -DI), 15)
Threshold System:
ADX < Threshold (default 15) = Ranging market → Bar color changes to purple
ADX > Threshold = Trending market → Normal bar coloring applies
Purpose: This prevents taking trend-following signals during sideways markets where most indicators produce whipsaws.
4. Smart Money Concepts (SMC) Integration
Order Blocks (OB):
Identified using swing high/low detection with customizable pivot length
Bullish OB: Last down-close candle before bullish Break of Structure (BOS)
Bearish OB: Last up-close candle before bearish BOS
Extended forward until price breaks through them
Fair Value Gaps (FVG):
Detected when a three-candle gap exists:
Bullish FVG: Low  > High 
Bearish FVG: High  < Low 
Filtered by price delta percentage to ensure significant gaps
Displayed as boxes that delete when price fills the gap
Break of Structure (BOS) vs. Change of Character (CHoCH):
BOS = Price breaks the previous structural high/low in the current trend direction
CHoCH = Price breaks structure in the opposite direction (potential trend reversal)
Both internal (minor) and swing (major) structures are tracked
Equal Highs/Lows (EQH/EQL):
Detected when consecutive swing highs/lows are within ATR threshold
Often indicates liquidity pools that price may sweep before reversing
5. ATR-Based Risk Management
Calculation:
ATR Band = ATR(14) × Risk Multiplier (default 3%)
Stop Loss = Entry - ATR Band (for longs) or Entry + ATR Band (for shorts)
Take Profit Levels:
TP1 = Entry + (Entry - Stop Loss) × 1
TP2 = Entry + (Entry - Stop Loss) × 2
TP3 = Entry + (Entry - Stop Loss) × 3
Dynamic Labels: Stop loss and take profit levels are automatically calculated and displayed as labels on the chart when new signals trigger.
6. Hull Moving Average Trend Cloud
HMA = WMA(2 × WMA(Close, Period/2) - WMA(Close, Period), sqrt(Period))
Period = 600 bars (long-term trend)
The HMA provides a smoothed long-term trend reference that's more responsive than traditional moving averages while filtering out short-term noise.
HOW TO USE THE INDICATOR
Entry Signals
Primary Buy Signal:
SuperTrend changes to green (price crosses above)
ADX shows market is NOT ranging (bars are NOT purple)
Price is within or near a bullish Order Block OR bullish FVG
Cirrus Cloud shows green fill (Layer 1 > Layer 2)
Primary Sell Signal:
SuperTrend changes to red (price crosses below)
ADX shows market is NOT ranging
Price is within or near a bearish Order Block OR bearish FVG
Cirrus Cloud shows red fill (Layer 1 < Layer 2)
Confirmation Layers
Higher Probability Trades Include:
Bullish/Bearish BOS in the same direction as signal
Equal highs/lows being swept before entry
Price respecting premium/discount zones (above/below equilibrium)
Multiple timeframe alignment (use MTF settings)
Exit Strategy
The indicator provides three take-profit levels:
TP1: Conservative target (1:1 risk-reward)
TP2: Moderate target (2:1 risk-reward)
TP3: Aggressive target (3:1 risk-reward)
Suggested Exit Approach:
Close 1/3 position at TP1
Move stop to breakeven
Close 1/3 position at TP2
Trail remaining position or exit at TP3
Risk Management
Stop Loss:
Use the ATR-based stop loss level displayed on chart
Alternatively, use percentage-based stop (adjustable in settings)
Never risk more than 1-2% of account per trade
Position Sizing:
Position Size = (Account Risk $) / (Entry Price - Stop Loss Price)
CUSTOMIZABLE SETTINGS
Core Parameters
Buy/Sell Signals:
Toggle signals on/off
Adjust SuperTrend sensitivity (0.5 - 2.0)
Risk Management:
Show/hide TP/SL levels
ATR period (default: 14)
Risk percentage (default: 3%)
Number of decimal places for price labels
Trend Features:
Cirrus Cloud display toggle
Range filter periods (x1, x2, x3, x4)
Hull MA length for trend cloud
Smart Money Concepts:
Order Block settings (swing length, display count)
Fair Value Gap parameters (auto-threshold, extend length)
Structure detection (internal vs swing)
EQH/EQL threshold
ADX Settings:
ADX length (default: 15)
Sideways threshold (10-30, default: 15)
Bar color toggle
Display Options:
Previous day/week/month high/low levels
Premium/Discount/Equilibrium zones
Trend candle coloring (colored or monochrome)
BEST PRACTICES & TRADING TIPS
Optimal Use Cases
Scalping on lower timeframes (1m, 5m, 15m)
Rapid entry/exit with clear TP levels
ADX filter prevents choppy market entries
Day trading on medium timeframes (30m, 1H)
Stronger trend confirmation
Better risk-reward ratios
Swing trading entries on higher timeframes (4H, Daily)
Higher-probability structural setups
Larger ATR-based stops accommodate volatility
Market Conditions
Best Performance:
Trending markets with clear directional bias
Post-news volatility with defined structure
Markets respecting support/resistance levels
Avoid Trading When:
ADX indicator shows purple bars (ranging market)
Multiple conflicting signals across timeframes
Major news events without clear price structure
Low volume periods (market open/close)
Common Mistakes to Avoid
Ignoring the ADX filter - Taking signals during ranging markets leads to whipsaws
Not waiting for confirmation - Enter only when multiple layers align
Overtrading - Fewer high-quality setups outperform many mediocre ones
Ignoring risk management - Always use the calculated stop losses
Fighting the trend - Trade WITH the SuperTrend and Cirrus Cloud direction
TECHNICAL SPECIFICATIONS
Indicator Type: Overlay (plots on price chart)
Calculation Resources:
Max labels: 500
Max lines: 500
Max boxes: 500
Max bars back: 500
Pine Script Version: 5
Compatible Timeframes: All timeframes (optimized for 1m to 1D)
Compatible Instruments:
Forex pairs
Crypto assets
Stock indices
Individual stocks
Commodities
THEORETICAL FOUNDATION
Trend-Following Concepts
This indicator is based on the principle that markets trend more often than they range, and that trends tend to persist. The SuperTrend component captures this momentum while the range filters prevent premature entries during pullbacks.
Smart Money Theory
The SMC elements are based on the concept that institutional traders (banks, hedge funds) leave footprints in the form of:
Order Blocks: Areas where large orders were placed
Fair Value Gaps: Inefficient price movements that may be revisited
Liquidity Sweeps: Stop hunts before continuation (EQH/EQL)
Volatility-Based Position Sizing
Using ATR for stop-loss placement ensures that stop distances adapt to current market conditions:
Tight stops in low volatility (avoids excessive risk)
Wider stops in high volatility (avoids premature stop-outs)
PERFORMANCE EXPECTATIONS
Realistic Expectations
Win Rate:
Expected: 45-55% (trend-following systems rarely exceed 60%)
Higher win rates on trending days
Lower win rates during consolidation (even with ADX filter)
Risk-Reward Ratio:
Target: 1.5:1 minimum (TP2)
Achievable: 2:1 to 3:1 on strong trends
Drawdowns:
Normal: 10-15% of account during choppy periods
Maximum: Should not exceed 20% with proper risk management
Optimization Tips
Backtesting Recommendations:
Test on at least 1 year of historical data
Include different market conditions (trending, ranging, volatile)
Adjust SuperTrend sensitivity per instrument
Optimize ADX threshold for your specific market
Record trades to identify personal execution errors
FREQUENTLY ASKED QUESTIONS
Q: Can I use this for automated trading?
A: The indicator provides signals, but you'll need to code a strategy script separately for automation. The signals can trigger alerts that connect to trading bots.
Q: Why do I see conflicting signals?
A: This is normal during transition periods. Wait for all confirmation layers to align before entering.
Q: How often should I expect signals?
A: Depends on timeframe and market conditions. On 5m charts during trending markets: 3-7 quality setups per session.
Q: Can I use only some features?
A: Yes, all components can be toggled on/off. However, the system works best with all confirmations active.
Q: What's the difference between internal and swing structures?
A: Internal = minor price structures (smaller pivots). Swing = major price structures (larger pivots). Both provide different levels of confirmation.
DISCLAIMER
This indicator is a tool for technical analysis and should not be the sole basis for trading decisions. Past performance does not guarantee future results. Always:
Use proper risk management
Test on demo accounts first
Never risk more than you can afford to lose
Combine with fundamental analysis when applicable
Understand that no indicator is 100% accurate
License: Mozilla Public License 2.0
Author: DrFXGOD
VERSION HISTORY & UPDATES
Initial Release - Version 1.0
Integrated SuperTrend, Range Filters, ADX, SMC concepts
ATR-based risk management
Multi-timeframe support
Customizable visual elements
SUPPORT & DOCUMENTATION
For questions, suggestions, or bug reports, please comment on the script page or contact the author through TradingView.
Additional Resources:
Smart Money Concepts: Research ICT (Inner Circle Trader) materials
ATR and Volatility: Refer to Wilder's original ATR documentation
SuperTrend Indicator: Study original SuperTrend strategy papers
Volume Cluster Heatmap [BackQuant]Volume Cluster Heatmap  
A visualization tool that maps traded volume across price levels over a chosen lookback period. It highlights where the market builds balance through heavy participation and where it moves efficiently through low-volume zones. By combining a heatmap, volume profile, and high/low volume node detection, this indicator reveals structural areas of support, resistance, and liquidity that drive price behavior.
 What Are Volume Clusters? 
A volume cluster is a horizontal aggregation of traded volume at specific price levels, showing where market participants concentrated their buying and selling.
 High Volume Nodes (HVN) : Price levels with significant trading activity; often act as support or resistance.
 Low Volume Nodes (LVN) : Price levels with little trading activity; price moves quickly through these areas, reflecting low liquidity.
Volume clusters help identify key structural zones, reveal potential reversals, and gauge market efficiency by highlighting where the market is balanced versus areas of thin liquidity.
By creating heatmaps, profiles, and highlighting high and low volume nodes (HVNs and LVNs), it allows traders to see where the market builds balance and where it moves efficiently through thin liquidity zones. 
Example: Bitcoin breaking away from the high-volume zone near 118k and moving cleanly through the low-volume pocket around 113k–115k, illustrating how markets seek efficiency: 
 Core Features 
 Visual Analysis Components: 
 
 Heatmap Display : Displays volume intensity as colored boxes, lines, or a combination for a dynamic view of market participation.
 Volume Profile Overlay : Shows cumulative volume per price level along the right-hand side of the chart.
 HVN & LVN Labels : Marks high and low volume nodes with color-coded lines and labels.
 Customizable Colors & Transparency : Adjust high and low volume colors and minimum transparency for clear differentiation.
 Session Reset & Timeframe Control : Dynamically resets clusters at the start of new sessions or chosen timeframes (intraday, daily, weekly).
 
 Alerts 
 
 HVN / LVN Alerts : Notify when price reaches a significant high or low volume node.
 High Volume Zone Alerts : Trigger when price enters the top X% of cumulative volume, signaling key areas of market interest.
 
 How It Works 
Each bar’s volume is distributed proportionally across the horizontal price levels it touches. Over the lookback period, this builds a cumulative volume profile, identifying price levels with the most and least trading activity. The highest cumulative volume levels become HVNs, while the lowest are LVNs. A side volume profile shows aggregated volume per level, and a heatmap overlay visually reinforces market structure.
 Applications for Traders 
 
 Identify strong support and resistance at HVNs.
 Detect areas of low liquidity where price may move quickly (LVNs).
 Determine market balance zones where price may consolidate.
 Filter noise: because volume clusters aggregate activity into levels, minor fluctuations and irrelevant micro-moves are removed, simplifying analysis and improving strategy development.
 Combine with other indicators such as VWAP, Supertrend, or CVD for higher-probability entries and exits.
 Use volume clusters to anticipate price reactions to breaking points in thin liquidity zones.
 
 Advanced Display Options 
 
   Heatmap Styles : Boxes, lines, or both. Boxes provide a traditional heatmap, lines are better for high granularity data.
   Line Mode Example : Simplified line visualization for easier reading at high level counts: 
 Profile Width & Offset : Adjust spacing and placement of the volume profile for clarity alongside price.
   Transparency Control : Lower transparency for more opaque visualization of high-volume zones.
 
 Best Practices for Usage 
 
 Reduce the number of levels when using line mode to avoid clutter.
 Use HVN and LVN markers in conjunction with volume profiles to plan entries and exits.
 Apply session resets to monitor intraday vs. multi-day volume accumulation.
 Combine with other technical indicators to confirm high-probability trading signals.
 Watch price interactions with LVNs for potential rapid movements and with HVNs for possible support/resistance or reversals.
 
 Technical Notes 
 
  Each bar contributes volume proportionally to the price levels it spans, creating a dynamic and accurate representation of traded interest.
 Volume profiles are scaled and offset for visual clarity alongside live price.
  Alerts are fully integrated for HVN/LVN interaction and high-volume zone entries.
  Optimized to handle large lookback windows and numerous price levels efficiently without performance degradation.
 
This indicator is ideal for understanding market structure, detecting key liquidity areas, and filtering out noise to model price more accurately in high-frequency or algorithmic strategies.
RSI Donchian Channel [DCAUT]█ RSI Donchian Channel  
 📊 ORIGINALITY & INNOVATION 
The RSI Donchian Channel represents an important synthesis of two complementary analytical frameworks: momentum oscillators and breakout detection systems. This indicator addresses a common limitation in traditional RSI analysis by replacing fixed overbought/oversold thresholds with adaptive zones derived from historical RSI extremes.
 Key Enhancement: 
Traditional RSI analysis relies on static threshold levels (typically 30/70), which may not adequately reflect changing market volatility regimes. This indicator adapts the reference zones dynamically based on the actual RSI behavior over the lookback period, helping traders identify meaningful momentum extremes relative to recent price action rather than arbitrary fixed levels.
The implementation combines the proven momentum measurement capabilities of RSI with Donchian Channel's breakout detection methodology, creating a framework that identifies both momentum exhaustion points and potential continuation signals through the same analytical lens.
 📐 MATHEMATICAL FOUNDATION 
 Core Calculation Process: 
 Step 1: RSI Calculation 
The Relative Strength Index measures momentum by comparing the magnitude of recent gains to recent losses:
 
 Calculate price changes between consecutive periods
 Separate positive changes (gains) from negative changes (losses)
 Apply selected smoothing method (RMA standard, also supports SMA, EMA, WMA) to both gain and loss series
 Compute Relative Strength (RS) as the ratio of smoothed gains to smoothed losses
 Transform RS into bounded 0-100 scale using the formula: RSI = 100 - (100 / (1 + RS))
 
 Step 2: Donchian Channel Application 
The Donchian Channel identifies the highest and lowest RSI values within the specified lookback period:
 
 Upper Channel: Highest RSI value over the lookback period, represents the recent momentum peak
 Lower Channel: Lowest RSI value over the lookback period, represents the recent momentum trough
 Middle Channel (Basis): Average of upper and lower channels, serves as equilibrium reference
 
 Channel Width Dynamics: 
The distance between upper and lower channels reflects RSI volatility. Wide channels indicate high momentum variability, while narrow channels suggest momentum consolidation and potential breakout preparation. The indicator monitors channel width over a 100-period window to identify squeeze conditions that often precede significant momentum shifts.
 📊 COMPREHENSIVE SIGNAL ANALYSIS 
 Primary Signal Categories: 
 Breakout Signals: 
 
 Upper Breakout: RSI crosses above the upper channel, indicates momentum reaching new relative highs and potential trend continuation, particularly significant when accompanied by price confirmation
 Lower Breakout: RSI crosses below the lower channel, suggests momentum reaching new relative lows and potential trend exhaustion or reversal setup
 Breakout strength is enhanced when the channel is narrow prior to the breakout, indicating a transition from consolidation to directional movement
 
 Mean Reversion Signals: 
 
 Upper Touch Without Breakout: RSI reaches the upper channel but fails to break through, may indicate momentum exhaustion and potential reversal opportunity
 Lower Touch Without Breakout: RSI reaches the lower channel without breakdown, suggests potential bounce as momentum reaches oversold extremes
 Return to Basis: RSI moving back toward the middle channel after touching extremes signals momentum normalization
 
 Trend Strength Assessment: 
 
 Sustained Upper Channel Riding: RSI consistently remains near or above the upper channel during strong uptrends, indicates persistent bullish momentum
 Sustained Lower Channel Riding: RSI stays near or below the lower channel during strong downtrends, reflects persistent bearish pressure
 Basis Line Position: RSI position relative to the middle channel helps identify the prevailing momentum bias
 
 Channel Compression Patterns: 
 
 Squeeze Detection: Channel width narrowing to 100-period lows indicates momentum consolidation, often precedes significant directional moves
 Expansion Phase: Channel widening after a squeeze confirms the initiation of a new momentum regime
 Persistent Narrow Channels: Extended periods of tight channels suggest market indecision and accumulation/distribution phases
 
 🎯 STRATEGIC APPLICATIONS 
 Trend Continuation Strategy: 
This approach focuses on identifying and trading momentum breakouts that confirm established trends:
 
 Identify the prevailing price trend using higher timeframe analysis or trend-following indicators
 Wait for RSI to break above the upper channel in uptrends (or below the lower channel in downtrends)
 Enter positions in the direction of the breakout when price action confirms the momentum shift
 Place protective stops below the recent swing low (long positions) or above swing high (short positions)
 Target profit levels based on prior swing extremes or use trailing stops to capture extended moves
 Exit when RSI crosses back through the basis line in the opposite direction
 
 Mean Reversion Strategy: 
This method capitalizes on momentum extremes and subsequent corrections toward equilibrium:
 
 Monitor for RSI reaching the upper or lower channel boundaries
 Look for rejection signals (price reversal patterns, volume divergence) when RSI touches the channels
 Enter counter-trend positions when RSI begins moving back toward the basis line
 Use the basis line as the initial profit target for mean reversion trades
 Implement tight stops beyond the channel extremes to limit risk on failed reversals
 Scale out of positions as RSI approaches the basis line and closes the position when RSI crosses the basis
 
 Breakout Preparation Strategy: 
This approach positions traders ahead of potential volatility expansion from consolidation phases:
 
 Identify squeeze conditions when channel width reaches 100-period lows
 Monitor price action for consolidation patterns (triangles, rectangles, flags) during the squeeze
 Prepare conditional orders for breakouts in both directions from the consolidation
 Enter positions when RSI breaks out of the narrow channel with expanding width
 Use the channel width expansion as a confirmation signal for the breakout's validity
 Manage risk with stops just inside the opposite channel boundary
 
 Multi-Timeframe Confluence Strategy: 
Combining RSI Donchian Channel analysis across multiple timeframes can improve signal reliability:
 
 Identify the primary trend direction using a higher timeframe RSI Donchian Channel (e.g., daily or weekly)
 Use a lower timeframe (e.g., 4-hour or hourly) to time precise entry points
 Enter long positions when both timeframes show RSI above their respective basis lines
 Enter short positions when both timeframes show RSI below their respective basis lines
 Avoid trades when timeframes provide conflicting signals (e.g., higher timeframe below basis, lower timeframe above)
 Exit when the higher timeframe RSI crosses its basis line in the opposite direction
 
 Risk Management Guidelines: 
Effective risk management is essential for all RSI Donchian Channel strategies:
 
 Position Sizing: Calculate position sizes based on the distance between entry point and stop loss, limiting risk to 1-2% of capital per trade
 Stop Loss Placement: For breakout trades, place stops just inside the opposite channel boundary; for mean reversion trades, use stops beyond the channel extremes
 Profit Targets: Use the basis line as a minimum target for mean reversion trades; for trend trades, target prior swing extremes or use trailing stops
 Channel Width Context: Increase position sizes during narrow channels (lower volatility) and reduce sizes during wide channels (higher volatility)
 Correlation Awareness: Monitor correlations between traded instruments to avoid over-concentration in similar setups
 
 📋 DETAILED PARAMETER CONFIGURATION 
 RSI Source: 
Defines the price data series used for RSI calculation:
 
 Close (Default): Standard choice providing end-of-period momentum assessment, suitable for most trading styles and timeframes
 High-Low Average (HL2): Reduces the impact of closing auction dynamics, useful for markets with significant end-of-day volatility
 High-Low-Close Average (HLC3): Provides a more balanced view incorporating the entire period's range
 Open-High-Low-Close Average (OHLC4): Offers the most comprehensive price representation, helpful for identifying overall period sentiment
 Strategy Consideration: Use Close for end-of-period signals, HL2 or HLC3 for intraday volatility reduction, OHLC4 for capturing full period dynamics
 
 RSI Length: 
Controls the number of periods used for RSI calculation:
 
 Short Periods (5-9): Highly responsive to recent price changes, produces more frequent signals with increased false signal risk, suitable for short-term trading and volatile markets
 Standard Period (14): Widely accepted default balancing responsiveness with stability, appropriate for swing trading and intermediate-term analysis
 Long Periods (21-28): Produces smoother RSI with fewer signals but more reliable trend identification, better for position trading and reducing noise in choppy markets
 Optimization Approach: Test different lengths against historical data for your specific market and timeframe, consider using longer periods in ranging markets and shorter periods in trending markets
 
 RSI MA Type: 
Determines the smoothing method applied to price changes in RSI calculation:
 
 RMA (Relative Moving Average - Default): Wilder's original smoothing method providing stable momentum measurement with gradual response to changes, maintains consistency with classical RSI interpretation
 SMA (Simple Moving Average): Treats all periods equally, responds more quickly to changes than RMA but may produce more whipsaws in volatile conditions
 EMA (Exponential Moving Average): Weights recent periods more heavily, increases responsiveness at the cost of potential noise, suitable for traders prioritizing early signal generation
 WMA (Weighted Moving Average): Applies linear weighting favoring recent data, offers a middle ground between SMA and EMA responsiveness
 Selection Guidance: Maintain RMA for consistency with traditional RSI analysis, use EMA or WMA for more responsive signals in fast-moving markets, apply SMA for maximum simplicity and transparency
 
 DC Length: 
Specifies the lookback period for Donchian Channel calculation on RSI values:
 
 Short Periods (10-14): Creates tight channels that adapt quickly to changing momentum conditions, generates more frequent trading signals but increases sensitivity to short-term RSI fluctuations
 Standard Period (20): Balances channel responsiveness with stability, aligns with traditional Bollinger Bands and moving average periods, suitable for most trading styles
 Long Periods (30-50): Produces wider, more stable channels that better represent sustained momentum extremes, reduces signal frequency while improving reliability, appropriate for position traders and higher timeframes
 Calibration Strategy: Match DC length to your trading timeframe (shorter for day trading, longer for swing trading), test channel width behavior during different market regimes, consider using adaptive periods that adjust to volatility conditions
 Market Adaptation: Use shorter DC lengths in trending markets to capture momentum shifts earlier, apply longer periods in ranging markets to filter noise and focus on significant extremes
 
 Parameter Combination Recommendations: 
 
 Scalping/Day Trading: RSI Length 5-9, DC Length 10-14, EMA or WMA smoothing for maximum responsiveness
 Swing Trading: RSI Length 14, DC Length 20, RMA smoothing for balanced analysis (default configuration)
 Position Trading: RSI Length 21-28, DC Length 30-50, RMA or SMA smoothing for stable signals
 High Volatility Markets: Longer RSI periods (21+) with standard DC length (20) to reduce noise
 Low Volatility Markets: Standard RSI length (14) with shorter DC length (10-14) to capture subtle momentum shifts
 
 📈 PERFORMANCE ANALYSIS & COMPETITIVE ADVANTAGES 
 Adaptive Threshold Mechanism: 
Unlike traditional RSI analysis with fixed 30/70 thresholds, this indicator's Donchian Channel approach provides several improvements:
 
 Context-Aware Extremes: Overbought/oversold levels adjust automatically based on recent momentum behavior rather than arbitrary fixed values
 Volatility Adaptation: In low volatility periods, channels narrow to reflect tighter momentum ranges; in high volatility, channels widen appropriately
 Market Regime Recognition: The indicator implicitly adapts to different market conditions without manual threshold adjustments
 False Signal Reduction: Adaptive channels help reduce premature reversal signals that often occur with fixed thresholds during strong trends
 
 Signal Quality Characteristics: 
The indicator's dual-purpose design provides distinct advantages for different trading objectives:
 
 Breakout Trading: Channel boundaries offer clear, objective breakout levels that update dynamically, eliminating the ambiguity of when momentum becomes "too high" or "too low"
 Mean Reversion: The basis line provides a natural profit target for reversion trades, representing the midpoint of recent momentum extremes
 Trend Strength: Persistent channel boundary riding offers an objective measure of trend strength without additional indicators
 Consolidation Detection: Channel width analysis provides early warning of potential volatility expansion from compression phases
 
 Comparative Analysis: 
When compared to traditional RSI implementations and other momentum frameworks:
 
 vs. Fixed Threshold RSI: Provides market-adaptive reference levels rather than static values, helping to reduce false signals during trending markets where RSI can remain "overbought" or "oversold" for extended periods
 vs. RSI Bollinger Bands: Offers clearer breakout signals and more intuitive extreme identification through actual high/low boundaries rather than statistical standard deviations
 vs. Stochastic Oscillator: Maintains RSI's momentum measurement advantages (unbounded calculation avoiding scale compression) while adding the breakout detection capabilities of Donchian Channels
 vs. Standard Donchian Channels: Applies breakout methodology to momentum space rather than price, providing earlier signals of potential trend changes before price breakouts occur
 
 Performance Characteristics: 
The indicator exhibits specific behavioral patterns across different market conditions:
 
 Trending Markets: Excels at identifying momentum continuation through channel breakouts, RSI tends to ride one channel boundary during strong trends, providing trend confirmation
 Ranging Markets: Channel width narrows during consolidation, offering early preparation signals for potential breakout trading opportunities
 High Volatility: Channels widen to reflect increased momentum variability, automatically adjusting signal sensitivity to match market conditions
 Low Volatility: Channels contract, making the indicator more sensitive to subtle momentum shifts that may be significant in calm market environments
 Transition Periods: Channel squeezes often precede major trend changes, offering advance warning of potential regime shifts
 
 Limitations and Considerations: 
Users should be aware of certain operational characteristics:
 
 Lookback Dependency: Channel boundaries depend entirely on the lookback period, meaning the indicator has no predictive element beyond identifying current momentum relative to recent history
 Lag Characteristics: As with all moving average-based indicators, RSI calculation introduces lag, and channel boundaries update only as new extremes occur within the lookback window
 Range-Bound Sensitivity: In extremely tight ranges, channels may become very narrow, potentially generating excessive signals from minor momentum fluctuations
 Trending Persistence: During very strong trends, RSI may remain at channel extremes for extended periods, requiring patience for mean reversion setups or commitment to trend-following approaches
 No Absolute Levels: Unlike traditional RSI, this indicator provides no fixed reference points (like 50), making it less suitable for strategies that depend on absolute momentum readings
 
 USAGE NOTES 
This indicator is designed for technical analysis and educational purposes to help traders understand momentum dynamics and identify potential trading opportunities. The RSI Donchian Channel has limitations and should not be used as the sole basis for trading decisions.
Important considerations:
 
 Performance varies significantly across different market conditions, timeframes, and instruments
 Historical signal patterns do not guarantee future results, as market behavior continuously evolves
 Effective use requires understanding of both RSI momentum principles and Donchian Channel breakout concepts
 Risk management practices (stop losses, position sizing, diversification) are essential for any trading application
 Consider combining with additional analytical tools such as volume analysis, price action patterns, or trend indicators for confirmation
 Backtest thoroughly on your specific instruments and timeframes before live trading implementation
 Be aware that optimization on historical data may lead to curve-fitting and poor forward performance
 
The indicator performs best when used as part of a comprehensive trading methodology that incorporates multiple forms of market analysis, sound risk management, and realistic expectations about win rates and drawdowns.
JK_Traders_Reality_LibLibrary   "JK_Traders_Reality_Lib" 
This library contains common elements used in Traders Reality scripts
 calcPvsra(pvsraVolume, pvsraHigh, pvsraLow, pvsraClose, pvsraOpen, redVectorColor, greenVectorColor, violetVectorColor, blueVectorColor, darkGreyCandleColor, lightGrayCandleColor) 
  calculate the pvsra candle color and return the color as well as an alert if a vector candle has apperared.
Situation "Climax"
Bars with volume >= 200% of the average volume of the 10 previous chart TFs, or bars
where the product of candle spread x candle volume is >= the highest for the 10 previous
chart time TFs.
Default Colors:  Bull bars are green and bear bars are red.
Situation "Volume Rising Above Average"
Bars with volume >= 150% of the average volume of the 10 previous chart TFs.
Default Colors:  Bull bars are blue and bear are violet.
  Parameters:
     pvsraVolume (float) : the instrument volume series (obtained from request.sequrity)
     pvsraHigh (float) : the instrument high series (obtained from request.sequrity)
     pvsraLow (float) : the instrument low series (obtained from request.sequrity)
     pvsraClose (float) : the instrument close series (obtained from request.sequrity)
     pvsraOpen (float) : the instrument open series (obtained from request.sequrity)
     redVectorColor (simple color) : red vector candle color
     greenVectorColor (simple color) : green vector candle color
     violetVectorColor (simple color) : violet/pink vector candle color
     blueVectorColor (simple color) : blue vector candle color
     darkGreyCandleColor (simple color) : regular volume candle down candle color - not a vector
     lightGrayCandleColor (simple color) : regular volume candle up candle color - not a vector
@return  
 adr(length, barsBack) 
  Parameters:
     length (simple int) : how many elements of the series to calculate on
     barsBack (simple int) : starting possition for the length calculation - current bar or some other value eg last bar
@return adr the adr for the specified lenght
 adrHigh(adr, fromDo) 
  Calculate the ADR high given an ADR
  Parameters:
     adr (float) : the adr
     fromDo (simple bool) : boolean flag, if false calculate traditional adr from high low of today, if true calcualte from exchange midnight
@return adrHigh the position of the adr high in price
 adrLow(adr, fromDo) 
  Parameters:
     adr (float) : the adr
     fromDo (simple bool) : boolean flag, if false calculate traditional adr from high low of today, if true calcualte from exchange midnight
@return adrLow the position of the adr low in price
 splitSessionString(sessXTime) 
  given a session in the format 0000-0100:23456 split out the hours and minutes
  Parameters:
     sessXTime (simple string) : the session time string usually in the format 0000-0100:23456
@return  
 calcSessionStartEnd(sessXTime, gmt) 
  calculate the start and end timestamps of the session
  Parameters:
     sessXTime (simple string) : the session time string usually in the format 0000-0100:23456
     gmt (simple string) : the gmt offset string usually in the format GMT+1 or GMT+2 etc
@return  
 drawOpenRange(sessXTime, sessXcol, showOrX, gmt) 
  draw open range for a session
  Parameters:
     sessXTime (simple string) : session string in the format 0000-0100:23456
     sessXcol (simple color) : the color to be used for the opening range box shading
     showOrX (simple bool) : boolean flag to toggle displaying the opening range
     gmt (simple string) : the gmt offset string usually in the format GMT+1 or GMT+2 etc
@return void
 drawSessionHiLo(sessXTime, showRectangleX, showLabelX, sessXcolLabel, sessXLabel, gmt, sessionLineStyle) 
  Parameters:
     sessXTime (simple string) : session string in the format 0000-0100:23456
     showRectangleX (simple bool) 
     showLabelX (simple bool) 
     sessXcolLabel (simple color) : the color to be used for the hi/low lines and label
     sessXLabel (simple string) : the session label text
     gmt (simple string) : the gmt offset string usually in the format GMT+1 or GMT+2 etc
     sessionLineStyle (simple string) : the line stile for the session high low lines
@return void
 calcDst() 
  calculate market session dst on/off flags
@return   indicating if DST is on or off for a particular region
 timestampPreviousDayOfWeek(previousDayOfWeek, hourOfDay, gmtOffset, oneWeekMillis) 
  Timestamp any of the 6 previous days in the week (such as last Wednesday at 21 hours GMT)
  Parameters:
     previousDayOfWeek (simple string) : Monday or Satruday
     hourOfDay (simple int) : the hour of the day when psy calc is to start
     gmtOffset (simple string) : the gmt offset string usually in the format GMT+1 or GMT+2 etc
     oneWeekMillis (simple int) : the amount if time for a week in milliseconds
@return the timestamp of the psy level calculation start time
 getdayOpen() 
  get the daily open - basically exchange midnight
@return the daily open value which is float price
 newBar(res) 
  new_bar: check if we're on a new bar within the session in a given resolution
  Parameters:
     res (simple string) : the desired resolution
@return true/false is a new bar for the session has started
 toPips(val) 
  to_pips Convert value to pips
  Parameters:
     val (float) : the value to convert to pips
@return the value in pips
 rLabel(ry, rtext, rstyle, rcolor, valid, labelXOffset) 
  a function that draws a right aligned lable for a series during the current bar
  Parameters:
     ry (float) : series float the y coordinate of the lable
     rtext (simple string) : the text of the label
     rstyle (simple string) : the style for the lable
     rcolor (simple color) : the color for the label
     valid (simple bool) : a boolean flag that allows for turning on or off a lable
     labelXOffset (int) : how much to offset the label from the current position
 rLabelOffset(ry, rtext, rstyle, rcolor, valid, labelOffset) 
  a function that draws a right aligned lable for a series during the current bar
  Parameters:
     ry (float) : series float the y coordinate of the lable
     rtext (string) : the text of the label
     rstyle (simple string) : the style for the lable
     rcolor (simple color) : the color for the label
     valid (simple bool) : a boolean flag that allows for turning on or off a lable
     labelOffset (int) 
 rLabelLastBar(ry, rtext, rstyle, rcolor, valid, labelXOffset) 
  a function that draws a right aligned lable for a series only on the last bar
  Parameters:
     ry (float) : series float the y coordinate of the lable
     rtext (string) : the text of the label
     rstyle (simple string) : the style for the lable
     rcolor (simple color) : the color for the label
     valid (simple bool) : a boolean flag that allows for turning on or off a lable
     labelXOffset (int) : how much to offset the label from the current position
 drawLine(xSeries, res, tag, xColor, xStyle, xWidth, xExtend, isLabelValid, xLabelOffset, validTimeFrame) 
  a function that draws a line and a label for a series
  Parameters:
     xSeries (float) : series float the y coordinate of the line/label
     res (simple string) : the desired resolution controlling when a new line will start
     tag (simple string) : the text for the lable
     xColor (simple color) : the color for the label
     xStyle (simple string) : the style for the line
     xWidth (simple int) : the width of the line
     xExtend (simple string) : extend the line
     isLabelValid (simple bool) : a boolean flag that allows for turning on or off a label
     xLabelOffset (int) 
     validTimeFrame (simple bool) : a boolean flag that allows for turning on or off a line drawn
 drawLineDO(xSeries, res, tag, xColor, xStyle, xWidth, xExtend, isLabelValid, xLabelOffset, validTimeFrame) 
  a function that draws a line and a label for the daily open series
  Parameters:
     xSeries (float) : series float the y coordinate of the line/label
     res (simple string) : the desired resolution controlling when a new line will start
     tag (simple string) : the text for the lable
     xColor (simple color) : the color for the label
     xStyle (simple string) : the style for the line
     xWidth (simple int) : the width of the line
     xExtend (simple string) : extend the line
     isLabelValid (simple bool) : a boolean flag that allows for turning on or off a label
     xLabelOffset (int) 
     validTimeFrame (simple bool) : a boolean flag that allows for turning on or off a line drawn
 drawPivot(pivotLevel, res, tag, pivotColor, pivotLabelColor, pivotStyle, pivotWidth, pivotExtend, isLabelValid, validTimeFrame, levelStart, pivotLabelXOffset) 
  draw a pivot line - the line starts one day into the past
  Parameters:
     pivotLevel (float) : series of the pivot point
     res (simple string) : the desired resolution
     tag (simple string) : the text to appear
     pivotColor (simple color) : the color of the line
     pivotLabelColor (simple color) : the color of the label
     pivotStyle (simple string) : the line style
     pivotWidth (simple int) : the line width
     pivotExtend (simple string) : extend the line
     isLabelValid (simple bool) : boolean param allows to turn label on and off
     validTimeFrame (simple bool) : only draw the line and label at a valid timeframe
     levelStart (int) : basically when to start drawing the levels
     pivotLabelXOffset (int) : how much to offset the label from its current postion
@return the pivot line series
 getPvsraFlagByColor(pvsraColor, redVectorColor, greenVectorColor, violetVectorColor, blueVectorColor, lightGrayCandleColor) 
  convert the pvsra color to an internal code
  Parameters:
     pvsraColor (color) : the calculated pvsra color
     redVectorColor (simple color) : the user defined red vector color
     greenVectorColor (simple color) : the user defined green vector color
     violetVectorColor (simple color) : the user defined violet vector color
     blueVectorColor (simple color) : the user defined blue vector color
     lightGrayCandleColor (simple color) : the user defined regular up candle color
@return pvsra internal code
 updateZones(pvsra, direction, boxArr, maxlevels, pvsraHigh, pvsraLow, pvsraOpen, pvsraClose, transperancy, zoneupdatetype, zonecolor, zonetype, borderwidth, coloroverride, redVectorColor, greenVectorColor, violetVectorColor, blueVectorColor) 
  a function that draws the unrecovered vector candle zones
  Parameters:
     pvsra (int) : internal code
     direction (simple int) : above or below the current pa
     boxArr (array) : the array containing the boxes that need to be updated
     maxlevels (simple int) : the maximum number of boxes to draw
     pvsraHigh (float) : the pvsra high value series
     pvsraLow (float) : the pvsra low value series
     pvsraOpen (float) : the pvsra open value series
     pvsraClose (float) : the pvsra close value series
     transperancy (simple int) : the transparencfy of the vecor candle zones
     zoneupdatetype (simple string) : the zone update type
     zonecolor (simple color) : the zone color if overriden
     zonetype (simple string) : the zone type
     borderwidth (simple int) : the width of the border
     coloroverride (simple bool) : if the color overriden
     redVectorColor (simple color) : the user defined red vector color
     greenVectorColor (simple color) : the user defined green vector color
     violetVectorColor (simple color) : the user defined violet vector color
     blueVectorColor (simple color) : the user defined blue vector color
 cleanarr(arr) 
  clean an array from na values
  Parameters:
     arr (array) : the array to clean
@return if the array was cleaned
 calcPsyLevels(oneWeekMillis, showPsylevels, psyType, sydDST) 
  calculate the psy levels
4 hour res based on how mt4 does it
mt4 code
int Li_4 = iBarShift(NULL, PERIOD_H4, iTime(NULL, PERIOD_W1, Li_0)) - 2 - Offset;
ObjectCreate("PsychHi", OBJ_TREND, 0, Time , iHigh(NULL, PERIOD_H4, iHighest(NULL, PERIOD_H4, MODE_HIGH, 2, Li_4)), iTime(NULL, PERIOD_W1, 0), iHigh(NULL, PERIOD_H4,
iHighest(NULL, PERIOD_H4, MODE_HIGH, 2, Li_4)));
so basically because the session is 8 hours and we are looking at a 4 hour resolution we only need to take the highest high an lowest low of 2 bars
we use the gmt offset to adjust the 0000-0800 session to Sydney open which is at 2100 during dst and at 2200 otherwize. (dst - spring foward, fall back)
keep in mind sydney is in the souther hemisphere so dst is oposite of when london and new york go into dst
  Parameters:
     oneWeekMillis (simple int) : a constant value
     showPsylevels (simple bool) : should psy levels be calculated
     psyType (simple string) : the type of Psylevels - crypto or forex
     sydDST (bool) : is Sydney in DST
@return  
 adrHiLo(length, barsBack, fromDO) 
  Parameters:
     length (simple int) : how many elements of the series to calculate on
     barsBack (simple int) : starting possition for the length calculation - current bar or some other value eg last bar
     fromDO (simple bool) : boolean flag, if false calculate traditional adr from high low of today, if true calcualte from exchange midnight
@return adr, adrLow and adrHigh  - the adr, the position of the adr High and adr Low with respect to price
 drawSessionHiloLite(sessXTime, showRectangleX, showLabelX, sessXcolLabel, sessXLabel, gmt, sessionLineStyle, sessXcol) 
  Parameters:
     sessXTime (simple string) : session string in the format 0000-0100:23456
     showRectangleX (simple bool) 
     showLabelX (simple bool) 
     sessXcolLabel (simple color) : the color to be used for the hi/low lines and label
     sessXLabel (simple string) : the session label text
     gmt (simple string) : the gmt offset string usually in the format GMT+1 or GMT+2 etc
     sessionLineStyle (simple string) : the line stile for the session high low lines
     sessXcol (simple color) : - the color for the box color that will color the session
@return void
 msToHmsString(ms) 
  converts milliseconds into an hh:mm string. For example, 61000 ms to '0:01:01'
  Parameters:
     ms (int) : - the milliseconds to convert to hh:mm
@return string - the converted hh:mm string
 countdownString(openToday, closeToday, showMarketsWeekends, oneDay) 
  that calculates how much time is left until the next session taking the session start and end times into account. Note this function does not work on intraday sessions.
  Parameters:
     openToday (int) : - timestamps of when the session opens in general - note its a series because the timestamp was created using the dst flag which is a series itself thus producing a timestamp series
     closeToday (int) : - timestamp of when the session closes in general - note its a series because the timestamp was created using the dst flag which is a series itself thus producing a timestamp series
@return a countdown of when next the session opens or 'Open' if the session is open now
     showMarketsWeekends (simple bool) 
     oneDay (simple int) 
 countdownStringSyd(sydOpenToday, sydCloseToday, showMarketsWeekends, oneDay) 
  that calculates how much time is left until the next session taking the session start and end times into account. special case of intraday sessions like sydney
  Parameters:
     sydOpenToday (int) 
     sydCloseToday (int) 
     showMarketsWeekends (simple bool) 
     oneDay (simple int)
Live Market - Performance MonitorLive Market — Performance Monitor
Study material (no code) — step-by-step training guide for learners 
________________________________________
1) What this tool is — short overview
This indicator is a live market performance monitor designed for learning. It scans price, volume and volatility, detects order blocks and trendline events, applies filters (volume & ATR), generates trade signals (BUY/SELL), creates simple TP/SL trade management, and renders a compact dashboard summarizing market state, risk and performance metrics.
Use it to learn how multi-factor signals are constructed, how Greeks-style sensitivity is replaced by volatility/ATR reasoning, and how a live dashboard helps monitor trade quality.
________________________________________
2) Quick start — how a learner uses it (step-by-step)
1.	Add the indicator to a chart (any ticker / timeframe).
2.	Open inputs and review the main groups: Order Block, Trendline, Signal Filters, Display.
3.	Start with defaults (OB periods ≈ 7, ATR multiplier 0.5, volume threshold 1.2) and observe the dashboard on the last bar.
4.	Walk the chart back in time (use the last-bar update behavior) and watch how signals, order blocks, trendlines, and the performance counters change.
5.	Run the hands-on labs below to build intuition.
________________________________________
3) Main configurable inputs (what you can tweak)
•	Order Block Relevant Periods (default ~7): number of consecutive candles used to define an order block.
•	Min. Percent Move for Valid OB (threshold): minimum percent move required for a valid order block.
•	Number of OB Channels: how many past order block lines to keep visible.
•	Trendline Period (tl_period): pivot lookback for detecting highs/lows used to draw trendlines.
•	Use Wicks for Trendlines: whether pivot uses wicks or body.
•	Extension Bars: how far trendlines are projected forward.
•	Use Volume Filter + Volume Threshold Multiplier (e.g., 1.2): requires volume to be greater than multiplier × average volume.
•	Use ATR Filter + ATR Multiplier: require bar range > ATR × multiplier to filter noise.
•	Show Targets / Table settings / Colors for visualization.
________________________________________
4) Core building blocks — what the script computes (plain language)
Price & trend:
•	Spot / LTP: current close price.
•	EMA 9 / 21 / 50: fast, medium, slow moving averages to define short/medium trend.
o	trend_bullish: EMA9 > EMA21 > EMA50
o	trend_bearish: EMA9 < EMA21 < EMA50
o	trend_neutral: otherwise
Volatility & noise:
•	ATR (14): average true range used for dynamic target and filter sizing.
•	dynamic_zone = ATR × atr_multiplier: minimum bar range required for meaningful move.
•	Annualized volatility: stdev of price changes × sqrt(252) × 100 — used to classify volatility (HIGH/MEDIUM/LOW).
Momentum & oscillators:
•	RSI 14: overbought/oversold indicator (thresholds 70/30).
•	MACD: EMA(12)-EMA(26) and a 9-period signal line; histogram used for momentum direction and strength.
•	Momentum (ta.mom 10): raw momentum over 10 bars.
Mean reversion / band context:
•	Bollinger Bands (20, 2σ): upper, mid, lower.
o	price_position measures where price sits inside the band range as 0–100.
Volume metrics:
•	avg_volume = SMA(volume, 20) and volume_spike = volume > avg_volume × volume_threshold
o	volume_ratio = volume / avg_volume
Support & Resistance:
•	support_level = lowest low over 20 bars
•	resistance_level = highest high over 20 bars
•	current_position = percent of price between support & resistance (0–100)
________________________________________
5) Order Block detection — concept & logic
What it tries to find: a bar (the base) followed by N candles in the opposite direction (a classical order block setup), with a minimum % move to qualify. The script records the high/low of the base candle, averages them, and plots those levels as OB channels.
How learners should think about it (conceptual):
1.	An order block is a signature area where institutions (theory) left liquidity — often seen as a large bar followed by a sequence of directional candles.
2.	This indicator uses a configurable number of subsequent candles to confirm that the pattern exists.
3.	When found, it stores and displays the base candle’s high/low area so students can see how price later reacts to those zones.
Implementation note for learners: the tool keeps a limited history of OB lines (ob_channels). When new OBs exceed the count, the oldest lines are removed — good practice to avoid clutter.
________________________________________
6) Trendline detection — idea & interpretation
•	The script finds pivot highs and lows using a symmetric lookback (tl_period and half that as right/left).
•	It then computes a trendline slope from successive pivots and projects the line forward (extension_bars).
•	Break detection: Resistance break = close crosses above the projected resistance line; Support break = close crosses below projected support.
Learning tip: trendlines here are computed from pivot points and time. Watch how changing tl_period (bigger = smoother, fewer pivots) alters the trendlines and break signals.
________________________________________
7) Signal generation & filters — step-by-step
1.	Primary triggers:
o	Bullish trigger: order block bullish OR resistance trendline break.
o	Bearish trigger: bearish order block OR support trendline break.
2.	Filters applied (both must pass unless disabled):
o	Volume filter: volume must be > avg_volume × volume_threshold.
o	ATR filter: bar range (high-low) must exceed ATR × atr_multiplier.
o	Not in an existing trade: new trades only start if trade_active is false.
3.	Trend confirmation:
o	The primary trigger is only confirmed if trend is bullish/neutral for buys or bearish/neutral for sells (EMA alignment).
4.	Result:
o	When confirmed, a long or short trade is activated with TP/SL calculated from ATR multiples.
________________________________________
8) Trade management — what the tool does after a signal
•	Entry management: the script marks a trade as trade_active and sets long_trade or short_trade flags.
•	TP & SL rules:
o	Long: TP = high + 2×ATR ; SL = low − 1×ATR
o	Short: TP = low − 2×ATR ; SL = high + 1×ATR
•	Monitoring & exit:
o	A trade closes when price reaches TP or SL.
o	When TP/SL hit, the indicator updates win_count and total_pnl using a very simple calculation (difference between TP/SL and previous close).
o	Visual lines/labels are drawn for TP and updated as the trade runs.
Important learner notes:
•	The script does not store a true entry price (it uses close  in its P&L math), so PnL is an approximation — treat this as a learning proxy, not a position accounting system.
•	There’s no sizing, slippage, or fee accounted — students must manually factor these when translating to real trades.
•	This indicator is not a backtesting strategy; strategy.* functions would be needed for rigorous backtest results.
________________________________________
9) Signal strength & helper utilities
•	Signal strength is a composite score (0–100) made up of four signals worth 25 points each:
1.	RSI extreme (overbought/oversold) → 25
2.	Volume spike → 25
3.	MACD histogram magnitude increasing → 25
4.	Trend existence (bull or bear) → 25
•	Progress bars (text glyphs) are used to visually show RSI and signal strength on the table.
Learning point: composite scoring is a way to combine orthogonal signals — study how changing weights changes outcomes.
________________________________________
10) Dashboard — how to read each section (walkthrough)
The dashboard is split into sections; here's how to interpret them:
1.	Market Overview
o	LTP / Change%: immediate price & daily % change.
2.	RSI & MACD
o	RSI value plus progress bar (overbought 70 / oversold 30).
o	MACD histogram sign indicates bullish/bearish momentum.
3.	Volume Analysis
o	Volume ratio (current / average) and whether there’s a spike.
4.	Order Block Status
o	Buy OB / Sell OB: the average base price of detected order blocks or “No Signal.”
5.	Signal Status
o	🔼 BUY or 🔽 SELL if confirmed, or ⚪ WAIT.
o	No-trade vs Active indicator summarizing market readiness.
6.	Trend Analysis
o	Trend direction (from EMAs), market sentiment score (composite), volatility level and band/position metrics.
7.	Performance
o	Win Rate = wins / signals (percentage)
o	Total PnL = cumulative PnL (approximate)
o	Bull / Bear Volume = accumulated volumes attributable to signals
8.	Support & Resistance
o	20-bar highest/lowest — use as nearby reference points.
9.	Risk & R:R
o	Risk Level from ATR/price as a percent.
o	R:R Ratio computed from TP/SL if a trade is active.
10.	Signal Strength & Active Trade Status
•	Numeric strength + progress bar and whether a trade is currently active with TP/SL display.
________________________________________
11) Alerts — what will notify you
The indicator includes pre-built alert triggers for:
•	Bullish confirmed signal
•	Bearish confirmed signal
•	TP hit (long/short)
•	SL hit (long/short)
•	No-trade zone
•	High signal strength (score > 75%)
Training use: enable alerts during a replay session to be notified when the indicator would have signalled.
________________________________________
12) Labs — hands-on exercises for learners (step-by-step)
Lab A — Order Block recognition
1.	Pick a 15–30 minute timeframe on a liquid ticker.
2.	Use default OB periods (7). Mark each time the dashboard shows a Buy/Sell OB.
3.	Manually inspect the chart at the base candle and the following sequence — draw the OB zone by hand and watch later price reactions to it.
4.	Repeat with OB periods 5 and 10; note stability vs noise.
Lab B — Trendline break confirmation
1.	Increase trendline period (e.g., 20), watch trendlines form from pivots.
2.	When a resistance break is flagged, compare with MACD & volume: was momentum aligned?
3.	Note false breaks vs confirmed moves — change extension_bars to see projection effects.
Lab C — Filter sensitivity
1.	Toggle Use Volume Filter off, and record the number and quality of signals in a 2-day window.
2.	Re-enable volume filter and change threshold from 1.2 → 1.6; note how many low-quality signals are filtered out.
Lab D — Trade management simulation
1.	For each signalled trade, record the time, close  entry approximation, TP, SL, and eventual hit/miss.
2.	Compute actual PnL if you had entered at the open of the next bar to compare with the script’s PnL math.
3.	Tabulate win rate and average R:R.
Lab E — Performance review & improvement
1.	Build a spreadsheet of signals over 30–90 periods with columns: Date, Signal type, Entry price (real), TP, SL, Exit, PnL, Notes.
2.	Analyze which filters or indicators contributed most to winners vs losers and adjust weights.
________________________________________
13) Common pitfalls, assumptions & implementation notes (things to watch)
•	P&L simplification: total_pnl uses close  as a proxy entry price. Real entry/exit prices and slippage are not recorded — so PnL is approximate.
•	No position sizing or money management: the script doesn’t compute position size from equity or risk percent.
•	Signal confirmation logic: composite "signal_strength" is a simple 4×25 point scheme — explore different weights or additional signals.
•	Order block detection nuance: the script defines the base candle and checks the subsequent sequence. Be sure to verify whether the intended candle direction (base being bullish vs bearish) aligns with academic/your trading definition — read the code carefully and test.
•	Trendline slope over time: slope is computed using timestamps; small differences may make lines sensitive on very short timeframes — using bar_index differences is usually more stable.
•	Not a true backtester: to evaluate performance statistically you must transform the logic into a strategy script that places hypothetical orders and records exact entry/exit prices.
________________________________________
14) Suggested improvements for advanced learners
•	Record true entry price & timestamp for accurate PnL.
•	Add position sizing: risk % per trade using SL distance and account size.
•	Convert to strategy. (Pine Strategy)* to run formal backtests with equity curves, drawdowns, and metrics (Sharpe, Sortino).
•	Log trades to an external spreadsheet (via alerts + webhook) for offline analysis.
•	Add statistics: average win/loss, expectancy, max drawdown.
•	Add additional filters: news time blackout, market session filters, multi-timeframe confirmation.
•	Improve OB detection: combine wick/body, volume spike at base bar, and liquidity sweep detection.
________________________________________
15) Glossary — quick definitions
•	ATR (Average True Range): measure of typical range; used to size targets and stops.
•	EMA (Exponential Moving Average): trend smoothing giving more weight to recent prices.
•	RSI (Relative Strength Index): momentum oscillator; >70 overbought, <30 oversold.
•	MACD: momentum oscillator using difference of two EMAs.
•	Bollinger Bands: volatility bands around SMA.
•	Order Block: a base candle area with subsequent confirmation candles; a zone of institutional interest (learning model).
•	Pivot High/Low: local turning point defined by candles on both sides.
•	Signal Strength: combined score from multiple indicators.
•	Win Rate: proportion of signals that hit TP vs total signals.
•	R:R (Risk:Reward): ratio of potential reward (TP distance) to risk (entry to SL).
________________________________________
16) Limitations & assumptions (be explicit)
•	This is an indicator for learning — not a trading robot or broker connection.
•	No slippage, fees, commissions or tie-in to real orders are considered.
•	The logic is heuristic (rule-of-thumb), not a guarantee of performance.
•	Results are sensitive to timeframe, market liquidity, and parameter choices.
________________________________________
17) Practical classroom / study plan (4 sessions)
•	Session 1 — Foundations: Understand EMAs, ATR, RSI, MACD, Bollinger Bands. Run the indicator and watch how these numbers change on a single day.
•	Session 2 — Zones & Filters: Study order blocks and trendlines. Test volume & ATR filters and note changes in false signals.
•	Session 3 — Simulated trading: Manually track 20 signals, compute real PnL and compare to the dashboard.
•	Session 4 — Improvement plan: Propose changes (e.g., better PnL accounting, alternative OB rule) and test their impact.
________________________________________
18) Quick reference checklist for each signal
1.	Was an order block or trendline break detected? (primary trigger)
2.	Did volume meet threshold? (filter)
3.	Did ATR filter (bar size) show a real move? (filter)
4.	Was trend aligned (EMA 9/21/50)? (confirmation)
5.	Signal confirmed → mark entry approximation, TP, SL.
6.	Monitor dashboard (Signal Strength, Volatility, No-trade zone, R:R).
7.	After exit, log real entry/exit, compute actual PnL, update spreadsheet.
________________________________________
19) Educational caveat & final note
This tool is built for training and analysis: it helps you see how common technical building blocks combine into trade ideas, but it is not a trading recommendation. Use it to develop judgment, to test hypotheses, and to design robust systems with proper backtesting and risk control before risking capital.
________________________________________
20) Disclaimer (must include)
Training & Educational Only — This material and the indicator are provided for educational purposes only. Nothing here is investment advice or a solicitation to buy or sell financial instruments. Past simulated or historical performance does not predict future results. Always perform full backtesting and risk management, and consider seeking advice from a qualified financial professional before trading with real capital.
________________________________________
Reversal Point Dynamics⇋ Reversal Point Dynamics (RPD) 
 This is not an indicator; it is a complete system for deconstructing the mechanics of a market reversal.  Reversal Point Dynamics (RPD) moves far beyond simplistic pattern recognition, venturing into a deep analysis of the underlying forces that cause trends to exhaust, pause, and turn. It is engineered from the ground up to identify high-probability reversal points by quantifying the confluence of market dynamics in real-time.
 Where other tools provide a static signal, RPD delivers a dynamic probability.  It understands that a true market turning point is not a single event, but a cascade of failing momentum, structural breakdown, and a shift in market order. RPD's core engine meticulously analyzes each of these dynamic components—the market's underlying state, its velocity and acceleration, its degree of chaos (entropy), and its structural framework. These forces are synthesized into a single, unified Probability Score, offering you an unprecedented, transparent view into the conviction behind every potential reversal.
 This is not a "black box" system.  It is an open-architecture engine designed to empower the discerning trader. Featuring real-time signal projection, an integrated Fibonacci R2R Target Engine, and a comprehensive dashboard that acts as your  Dynamics Control Center , RPD gives you a complete, holistic view of the market's state.
 The Theoretical Core: Deconstructing Market Dynamics 
 RPD's analytical power is born from the intelligent synthesis of multiple, distinct theoretical models.  Each pillar of the engine analyzes a different facet of market behavior. The convergence of these analyses—the "Singularity" event referenced in the dashboard—is what generates the final, high-conviction probability score.
 1. Pillar One: Quantum State Analysis (QSA) 
 This is the foundational analysis of the market's current state within its recent context.  Instead of treating price as a random walk, QSA quantizes it into a finite number of discrete "states."
 Formulaic Concept:  The engine establishes a price range using the highest high and lowest low over the Adaptive Analysis Period. This range is then divided into a user-defined number of Analysis Levels. The current price is mapped to one of these states (e.g., in a 9-level system, State 0 is the absolute low, and State 8 is the absolute high).
 Analytical Edge:  This acts as a powerful foundational filter. The engine will only begin searching for reversal signals when the market has reached a statistically stretched, extreme state (e.g., State 0 or 8). The Edge Sensitivity input allows you to control exactly how close to this extreme edge the price must be, ensuring you are trading from points of maximum potential exhaustion.
 2. Pillar Two: Price State Roc (PSR) - The Dynamics of Momentum 
 This pillar analyzes the kinetic forces of the market: its velocity and acceleration.  It understands that it’s not just where the price is, but how it got there that matters.
 Formulaic Concept:  The psr function calculates two derivatives of price.
 Velocity:  (price - price ). This measures the speed and direction of the current move.
 Acceleration:  (velocity - velocity ). This measures the rate of change in that speed. A negative acceleration (deceleration) during a strong rally is a critical pre-reversal warning, indicating momentum is fading even as price may be pushing higher.
 Analytical Edge:  The engine specifically hunts for exhaustion patterns where momentum is clearly decelerating as price reaches an extreme state. This is the mechanical signature of a weakening trend.
 3. Pillar Three: Market Entropy Analysis - The Dynamics of Order & Chaos 
 This is RPD's chaos filter, a concept borrowed from information theory.  Entropy measures the degree of randomness or disorder in the market's price action.
 Formulaic Concept:  The calculateEntropy function analyzes recent price changes. A market moving directionally and smoothly has low entropy (high order). A market chopping back and forth without direction has high entropy (high chaos). The value is normalized between 0 and 1.
 Analytical Edge:  The most reliable trades occur in low-entropy, ordered environments. RPD uses the Entropy Threshold to disqualify signals that attempt to form in chaotic, unpredictable conditions, providing a powerful shield against whipsaw markets.
 4. Pillar Four: The Synthesis Engine & Probability Calculation 
 This is where all the dynamic forces converge.  The final probability score is a weighted calculation that heavily rewards confluence.
 Formulaic Concept:  The calculateProbability function intelligently assembles the final score:
A  Base Score  is established from trend strength and entropy.
An  Entropy Score  adds points for low entropy (order) and subtracts for high entropy (chaos).
A significant  Divergence Bonus  is awarded for a classic momentum divergence.
 RSI & Volume Bonuses  are added if momentum oscillators are in extreme territory or a volume spike confirms institutional interest.
 MTF & Adaptive Bonuses  add further weight for alignment with higher timeframe structure.
 Analytical Edge:  A signal backed by multiple dynamic forces (e.g., extreme state + decelerating momentum + low entropy + volume spike) will receive an exponentially higher probability score.  This is the very essence of analyzing reversal point dynamics. 
 The Command Center: Mastering the Inputs 
 Every input is a precise lever of control, allowing you to fine-tune the RPD engine to your exact trading style, market, and timeframe. 
 🧠 Core Algorithm 
 Predictive Mode (Early Detection): 
 What It Is:  Enables the engine to search for potential reversals on the current, unclosed bar.
 How It Works:  Analyzes intra-bar acceleration and state to identify developing exhaustion. These signals are marked with a ' ? ' and are tentative.
 How To Use It:  Enable for scalping or very aggressive day trading to get the earliest possible indication. Disable for swing trading or a more conservative approach that waits for full bar confirmation.
 Live Signal Mode (Current Bar): 
 What It Is:  A highly aggressive mode that plots tentative signals with a ' ! ' on the live bar based on projected price and momentum. These signals repaint intra-bar.
 How It Works:  Uses a linear regression projection of the close to anticipate a reversal.
 How To Use It:  For advanced users who use intra-bar dynamics for execution and understand the nature of repainting signals.
 Adaptive Analysis Period: 
 What It Is:  The main lookback period for the QSA, PSR, and Entropy calculations. This is the engine's "memory."
 How It Works:  A shorter period makes the engine highly sensitive to local price swings. A longer period makes it focus only on major, significant market structure.
 How To Use It:   Scalping (1-5m):  15-25.  Day Trading (15m-1H):  25-40.  Swing Trading (4H+):  40-60.
 Fractal Strength (Bars): 
 What It Is:  Defines the strength of the pivot detection used for confirming reversal events.
 How It Works:  A value of '2' requires a candle's high/low to be more extreme than the two bars to its left and right.
 How To Use It:  '2' is a robust standard. Increase to '3' for an even stricter definition of a structural pivot, which will result in fewer signals.
 MTF Multiplier: 
 What It Is:  Integrates pivot data from a higher timeframe for confluence.
 How It Works:  A multiplier of '4' on a 15-minute chart will pull pivot data from the 1-hour chart (15 * 4 = 60m).
 How To Use It:  Set to a multiple that corresponds to your preferred higher timeframe for contextual analysis.
 🎯 Signal Settings 
 Min Probability %: 
 What It Is:  Your master quality filter. A signal is only plotted if its score exceeds this threshold.
 How It Works:  Directly filters the output of the final probability calculation.
 How To Use It:   High-Quality (80-95):  For A+ setups only.  Balanced (65-75):  For day trading.  Aggressive (50-60):  For scalping.
 Min Signal Distance (Bars): 
 What It Is:  A noise filter that prevents signals from clustering in choppy conditions.
 How It Works:  Enforces a "cooldown" period of N bars after a signal.
 How To Use It:  Increase in ranging markets to focus on major swings. Decrease on lower timeframes.
 Entropy Threshold: 
 What It Is:  Your "chaos shield." Sets the maximum allowable market randomness for a signal.
 How It Works:  If calculated entropy is above this value, the signal is invalidated.
 How To Use It:   Lower values (0.1-0.5):  Extremely strict.  Higher values (0.7-1.0):  More lenient. 0.85 is a good balance.
 Adaptive Entropy & Aggressive Mode: 
 What It Is:  Toggles for dynamically adjusting the engine's core parameters.
 How It Works:  Adaptive Entropy can slightly lower the required probability in strong trends. Aggressive Mode uses more lenient settings across the board.
 How To Use It:  Keep Adaptive on. Use Aggressive Mode sparingly, primarily for scalping highly volatile assets.
 📊 State Analysis 
 Analysis Levels: 
 What It Is:  The number of discrete "states" for the QSA.
 How It Works:  More levels create a finer-grained analysis of price location.
 How To Use It:  6-7 levels are ideal. Increasing to 9 can provide more precision on very volatile assets.
 Edge Sensitivity: 
 What It Is:  Defines how close to the absolute top/bottom of the range price must be.
 How It Works:  '0' means price must be in the absolute highest/lowest state. '3' allows a signal within the top/bottom 3 states.
 How To Use It:  '3' provides a good balance. Lower it to '1' or '0' if you only want to trade extreme exhaustion.
 The Dashboard: Your Dynamics Control Center 
 The dashboard provides a transparent, real-time view into the engine's brain.  Use it to understand the context behind every signal and to gauge the current market environment at a glance.
 🎯 UNIFIED PROB SCORE 
 TOTAL SCORE:  The highest probability score (either Peak or Valley) the engine is currently calculating. This is your main at-a-glance conviction metric. The "Singularity" header refers to the event where market dynamics align—the event RPD is built to detect.
 Quality:  A human-readable interpretation of the Total Score.  "EXCEPTIONAL" (🌟)  is a rare, A+ confluence event.  "STRONG" (💪)  is a high-quality, tradable setup.
 📊 ORDER FLOW & COMPONENT ANALYSIS 
 Volume Spike:  Shows if the current volume is significantly higher than average (YES/NO). A 'YES' adds major confirmation.
 Peak/Valley Conf:  This breaks down the probability score into its directional components, showing you the separate confidence levels for a potential top (Peak) versus a bottom (Valley).
 🌌 MARKET STRUCTURE 
 HTF Trend:  Shows the direction of the underlying trend based on a Supertrend calculation.
 Entropy:  The current market chaos reading.  "🔥 LOW"  is an ideal, ordered state for trading.  "😴 HIGH"  is a warning of choppy, unpredictable conditions.
 🔮 FIB & R2R ZONE (Large Dashboard) 
 This section gives you the status of the Fibonacci Target Engine.  It shows if an Active Channel (entry zone) or Stop Zone (invalidation zone) is active and displays the precise price levels for the static entry, target, and stop calculated at the time of the signal.
 🛡️ FILTERS & PREDICTIVES (Large Dashboard) 
 This panel provides a status check on all the bonus filters.  It shows the current RSI Status, whether a Divergence is present, and if a Live Pending signal is forming.
 The Visual Interface: A Symphony of Data 
 Every visual element is designed for instant, intuitive interpretation of market dynamics. 
 Signal Markers:  These are the primary outputs of the engine.
▼/▲ b:  A fully confirmed signal that has passed all filters.
? b:  A tentative signal generated in Predictive Mode, indicating developing dynamics.
◈ b:  This diamond icon replaces the standard triangle when the signal is confirmed by a strong momentum divergence, highlighting it as a superior setup where dynamics are misaligned with price.
 Harmonic Wave:  The flowing, colored wave around the price.
 What It Represents:  The market's "flow dynamic" and volatility.
 How to Interpret It:  Expanding waves show increasing volatility. The color is tied to the "Quantum Color" in your theme, representing the underlying energy field of the market.
 Entropy Particles:  The small dots appearing above/below price.
 What They Represent:  A direct visualization of the "order dynamic."
 How to Interpret Them:   Their presence  signifies a low-entropy, ordered state ideal for trading.  Their color  indicates the direction of momentum (PSR velocity).  Their absence  means the market is too chaotic (high entropy).
 The Fibonacci Target Engine:  The dynamic R2R system appearing post-signal.
 Static Fib Levels:  Colored horizontal lines representing the market's "structural dynamic."
 The Green "Active Channel" Box:  Your  zone of consideration.  An area to manage a potential entry.
 Development Philosophy 
 Reversal Point Dynamics was engineered to answer a fundamental question: can we objectively measure the forces behind a market turn?  It is a synthesis of concepts from market microstructure, statistics, and information theory. The objective was never to create a "perfect" system, but to build a robust decision-support tool that provides a measurable, statistical edge by focusing on the principle of confluence.
 By demanding that multiple, independent market dynamics align simultaneously, RPD filters out the vast majority of market noise.  It is designed for the trader who thinks in terms of probability and risk management, not in terms of certainties. It is a tool to help you discount the obvious and bet on the unexpected alignment of market forces.
 "Markets are constantly in a state of uncertainty and flux and money is made by discounting the obvious and betting on the unexpected." 
—  George Soros 
Trade with insight. Trade with anticipation.
— Dskyz, for DAFE Trading Systems
Tensor Market Analysis Engine (TMAE)# Tensor Market Analysis Engine (TMAE)
## Advanced Multi-Dimensional Mathematical Analysis System
*Where Quantum Mathematics Meets Market Structure*
---
## 🎓 THEORETICAL FOUNDATION
The Tensor Market Analysis Engine represents a revolutionary synthesis of three cutting-edge mathematical frameworks that have never before been combined for comprehensive market analysis. This indicator transcends traditional technical analysis by implementing advanced mathematical concepts from quantum mechanics, information theory, and fractal geometry.
### 🌊 Multi-Dimensional Volatility with Jump Detection
**Hawkes Process Implementation:**
The TMAE employs a sophisticated Hawkes process approximation for detecting self-exciting market jumps. Unlike traditional volatility measures that treat price movements as independent events, the Hawkes process recognizes that market shocks cluster and exhibit memory effects.
**Mathematical Foundation:**
```
Intensity λ(t) = μ + Σ α(t - Tᵢ)
```
Where market jumps at times Tᵢ increase the probability of future jumps through the decay function α, controlled by the Hawkes Decay parameter (0.5-0.99).
**Mahalanobis Distance Calculation:**
The engine calculates volatility jumps using multi-dimensional Mahalanobis distance across up to 5 volatility dimensions:
- **Dimension 1:** Price volatility (standard deviation of returns)
- **Dimension 2:** Volume volatility (normalized volume fluctuations)
- **Dimension 3:** Range volatility (high-low spread variations)
- **Dimension 4:** Correlation volatility (price-volume relationship changes)
- **Dimension 5:** Microstructure volatility (intrabar positioning analysis)
This creates a volatility state vector that captures market behavior impossible to detect with traditional single-dimensional approaches.
### 📐 Hurst Exponent Regime Detection
**Fractal Market Hypothesis Integration:**
The TMAE implements advanced Rescaled Range (R/S) analysis to calculate the Hurst exponent in real-time, providing dynamic regime classification:
- **H > 0.6:** Trending (persistent) markets - momentum strategies optimal
- **H < 0.4:** Mean-reverting (anti-persistent) markets - contrarian strategies optimal  
- **H ≈ 0.5:** Random walk markets - breakout strategies preferred
**Adaptive R/S Analysis:**
Unlike static implementations, the TMAE uses adaptive windowing that adjusts to market conditions:
```
H = log(R/S) / log(n)
```
Where R is the range of cumulative deviations and S is the standard deviation over period n.
**Dynamic Regime Classification:**
The system employs hysteresis to prevent regime flipping, requiring sustained Hurst values before regime changes are confirmed. This prevents false signals during transitional periods.
### 🔄 Transfer Entropy Analysis
**Information Flow Quantification:**
Transfer entropy measures the directional flow of information between price and volume, revealing lead-lag relationships that indicate future price movements:
```
TE(X→Y) = Σ p(yₜ₊₁, yₜ, xₜ) log 
```
**Causality Detection:**
- **Volume → Price:** Indicates accumulation/distribution phases
- **Price → Volume:** Suggests retail participation or momentum chasing
- **Balanced Flow:** Market equilibrium or transition periods
The system analyzes multiple lag periods (2-20 bars) to capture both immediate and structural information flows.
---
## 🔧 COMPREHENSIVE INPUT SYSTEM
### Core Parameters Group
**Primary Analysis Window (10-100, Default: 50)**
The fundamental lookback period affecting all calculations. Optimization by timeframe:
- **1-5 minute charts:** 20-30 (rapid adaptation to micro-movements)
- **15 minute-1 hour:** 30-50 (balanced responsiveness and stability)
- **4 hour-daily:** 50-100 (smooth signals, reduced noise)
- **Asset-specific:** Cryptocurrency 20-35, Stocks 35-50, Forex 40-60
**Signal Sensitivity (0.1-2.0, Default: 0.7)**
Master control affecting all threshold calculations:
- **Conservative (0.3-0.6):** High-quality signals only, fewer false positives
- **Balanced (0.7-1.0):** Optimal risk-reward ratio for most trading styles
- **Aggressive (1.1-2.0):** Maximum signal frequency, requires careful filtering
**Signal Generation Mode:**
- **Aggressive:** Any component signals (highest frequency)
- **Confluence:** 2+ components agree (balanced approach)
- **Conservative:** All 3 components align (highest quality)
### Volatility Jump Detection Group
**Volatility Dimensions (2-5, Default: 3)**
Determines the mathematical space complexity:
- **2D:** Price + Volume volatility (suitable for clean markets)
- **3D:** + Range volatility (optimal for most conditions)
- **4D:** + Correlation volatility (advanced multi-asset analysis)
- **5D:** + Microstructure volatility (maximum sensitivity)
**Jump Detection Threshold (1.5-4.0σ, Default: 3.0σ)**
Standard deviations required for volatility jump classification:
- **Cryptocurrency:** 2.0-2.5σ (naturally volatile)
- **Stock Indices:** 2.5-3.0σ (moderate volatility)
- **Forex Major Pairs:** 3.0-3.5σ (typically stable)
- **Commodities:** 2.0-3.0σ (varies by commodity)
**Jump Clustering Decay (0.5-0.99, Default: 0.85)**
Hawkes process memory parameter:
- **0.5-0.7:** Fast decay (jumps treated as independent)
- **0.8-0.9:** Moderate clustering (realistic market behavior)
- **0.95-0.99:** Strong clustering (crisis/event-driven markets)
### Hurst Exponent Analysis Group
**Calculation Method Options:**
- **Classic R/S:** Original Rescaled Range (fast, simple)
- **Adaptive R/S:** Dynamic windowing (recommended for trading)
- **DFA:** Detrended Fluctuation Analysis (best for noisy data)
**Trending Threshold (0.55-0.8, Default: 0.60)**
Hurst value defining persistent market behavior:
- **0.55-0.60:** Weak trend persistence
- **0.65-0.70:** Clear trending behavior
- **0.75-0.80:** Strong momentum regimes
**Mean Reversion Threshold (0.2-0.45, Default: 0.40)**
Hurst value defining anti-persistent behavior:
- **0.35-0.45:** Weak mean reversion
- **0.25-0.35:** Clear ranging behavior
- **0.15-0.25:** Strong reversion tendency
### Transfer Entropy Parameters Group
**Information Flow Analysis:**
- **Price-Volume:** Classic flow analysis for accumulation/distribution
- **Price-Volatility:** Risk flow analysis for sentiment shifts
- **Multi-Timeframe:** Cross-timeframe causality detection
**Maximum Lag (2-20, Default: 5)**
Causality detection window:
- **2-5 bars:** Immediate causality (scalping)
- **5-10 bars:** Short-term flow (day trading)
- **10-20 bars:** Structural flow (swing trading)
**Significance Threshold (0.05-0.3, Default: 0.15)**
Minimum entropy for signal generation:
- **0.05-0.10:** Detect subtle information flows
- **0.10-0.20:** Clear causality only
- **0.20-0.30:** Very strong flows only
---
## 🎨 ADVANCED VISUAL SYSTEM
### Tensor Volatility Field Visualization
**Five-Layer Resonance Bands:**
The tensor field creates dynamic support/resistance zones that expand and contract based on mathematical field strength:
- **Core Layer (Purple):** Primary tensor field with highest intensity
- **Layer 2 (Neutral):** Secondary mathematical resonance
- **Layer 3 (Info Blue):** Tertiary harmonic frequencies  
- **Layer 4 (Warning Gold):** Outer field boundaries
- **Layer 5 (Success Green):** Maximum field extension
**Field Strength Calculation:**
```
Field Strength = min(3.0, Mahalanobis Distance × Tensor Intensity)
```
The field amplitude adjusts to ATR and mathematical distance, creating dynamic zones that respond to market volatility.
**Radiation Line Network:**
During active tensor states, the system projects directional radiation lines showing field energy distribution:
- **8 Directional Rays:** Complete angular coverage
- **Tapering Segments:** Progressive transparency for natural visual flow
- **Pulse Effects:** Enhanced visualization during volatility jumps
### Dimensional Portal System
**Portal Mathematics:**
Dimensional portals visualize regime transitions using category theory principles:
- **Green Portals (◉):** Trending regime detection (appear below price for support)
- **Red Portals (◎):** Mean-reverting regime (appear above price for resistance)  
- **Yellow Portals (○):** Random walk regime (neutral positioning)
**Tensor Trail Effects:**
Each portal generates 8 trailing particles showing mathematical momentum:
- **Large Particles (●):** Strong mathematical signal
- **Medium Particles (◦):** Moderate signal strength
- **Small Particles (·):** Weak signal continuation
- **Micro Particles (˙):** Signal dissipation
### Information Flow Streams
**Particle Stream Visualization:**
Transfer entropy creates flowing particle streams indicating information direction:
- **Upward Streams:** Volume leading price (accumulation phases)
- **Downward Streams:** Price leading volume (distribution phases)
- **Stream Density:** Proportional to information flow strength
**15-Particle Evolution:**
Each stream contains 15 particles with progressive sizing and transparency, creating natural flow visualization that makes information transfer immediately apparent.
### Fractal Matrix Grid System
**Multi-Timeframe Fractal Levels:**
The system calculates and displays fractal highs/lows across five Fibonacci periods:
- **8-Period:** Short-term fractal structure
- **13-Period:** Intermediate-term patterns
- **21-Period:** Primary swing levels
- **34-Period:** Major structural levels
- **55-Period:** Long-term fractal boundaries
**Triple-Layer Visualization:**
Each fractal level uses three-layer rendering:
- **Shadow Layer:** Widest, darkest foundation (width 5)
- **Glow Layer:** Medium white core line (width 3)
- **Tensor Layer:** Dotted mathematical overlay (width 1)
**Intelligent Labeling System:**
Smart spacing prevents label overlap using ATR-based minimum distances. Labels include:
- **Fractal Period:** Time-based identification
- **Topological Class:** Mathematical complexity rating (0, I, II, III)
- **Price Level:** Exact fractal price
- **Mahalanobis Distance:** Current mathematical field strength
- **Hurst Exponent:** Current regime classification
- **Anomaly Indicators:** Visual strength representations (○ ◐ ● ⚡)
### Wick Pressure Analysis
**Rejection Level Mathematics:**
The system analyzes candle wick patterns to project future pressure zones:
- **Upper Wick Analysis:** Identifies selling pressure and resistance zones
- **Lower Wick Analysis:** Identifies buying pressure and support zones
- **Pressure Projection:** Extends lines forward based on mathematical probability
**Multi-Layer Glow Effects:**
Wick pressure lines use progressive transparency (1-8 layers) creating natural glow effects that make pressure zones immediately visible without cluttering the chart.
### Enhanced Regime Background
**Dynamic Intensity Mapping:**
Background colors reflect mathematical regime strength:
- **Deep Transparency (98% alpha):** Subtle regime indication
- **Pulse Intensity:** Based on regime strength calculation
- **Color Coding:** Green (trending), Red (mean-reverting), Neutral (random)
**Smoothing Integration:**
Regime changes incorporate 10-bar smoothing to prevent background flicker while maintaining responsiveness to genuine regime shifts.
### Color Scheme System
**Six Professional Themes:**
- **Dark (Default):** Professional trading environment optimization
- **Light:** High ambient light conditions
- **Classic:** Traditional technical analysis appearance
- **Neon:** High-contrast visibility for active trading
- **Neutral:** Minimal distraction focus
- **Bright:** Maximum visibility for complex setups
Each theme maintains mathematical accuracy while optimizing visual clarity for different trading environments and personal preferences.
---
## 📊 INSTITUTIONAL-GRADE DASHBOARD
### Tensor Field Status Section
**Field Strength Display:**
Real-time Mahalanobis distance calculation with dynamic emoji indicators:
- **⚡ (Lightning):** Extreme field strength (>1.5× threshold)
- **● (Solid Circle):** Strong field activity (>1.0× threshold)  
- **○ (Open Circle):** Normal field state
**Signal Quality Rating:**
Democratic algorithm assessment:
- **ELITE:** All 3 components aligned (highest probability)
- **STRONG:** 2 components aligned (good probability)
- **GOOD:** 1 component active (moderate probability)
- **WEAK:** No clear component signals
**Threshold and Anomaly Monitoring:**
- **Threshold Display:** Current mathematical threshold setting
- **Anomaly Level (0-100%):** Combined volatility and volume spike measurement
  - **>70%:** High anomaly (red warning)
  - **30-70%:** Moderate anomaly (orange caution)
  - **<30%:** Normal conditions (green confirmation)
### Tensor State Analysis Section
**Mathematical State Classification:**
- **↑ BULL (Tensor State +1):** Trending regime with bullish bias
- **↓ BEAR (Tensor State -1):** Mean-reverting regime with bearish bias  
- **◈ SUPER (Tensor State 0):** Random walk regime (neutral)
**Visual State Gauge:**
Five-circle progression showing tensor field polarity:
- **🟢🟢🟢⚪⚪:** Strong bullish mathematical alignment
- **⚪⚪🟡⚪⚪:** Neutral/transitional state
- **⚪⚪🔴🔴🔴:** Strong bearish mathematical alignment
**Trend Direction and Phase Analysis:**
- **📈 BULL / 📉 BEAR / ➡️ NEUTRAL:** Primary trend classification
- **🌪️ CHAOS:** Extreme information flow (>2.0 flow strength)
- **⚡ ACTIVE:** Strong information flow (1.0-2.0 flow strength)
- **😴 CALM:** Low information flow (<1.0 flow strength)
### Trading Signals Section
**Real-Time Signal Status:**
- **🟢 ACTIVE / ⚪ INACTIVE:** Long signal availability
- **🔴 ACTIVE / ⚪ INACTIVE:** Short signal availability
- **Components (X/3):** Active algorithmic components
- **Mode Display:** Current signal generation mode
**Signal Strength Visualization:**
Color-coded component count:
- **Green:** 3/3 components (maximum confidence)
- **Aqua:** 2/3 components (good confidence)
- **Orange:** 1/3 components (moderate confidence)  
- **Gray:** 0/3 components (no signals)
### Performance Metrics Section
**Win Rate Monitoring:**
Estimated win rates based on signal quality with emoji indicators:
- **🔥 (Fire):** ≥60% estimated win rate
- **👍 (Thumbs Up):** 45-59% estimated win rate
- **⚠️ (Warning):** <45% estimated win rate
**Mathematical Metrics:**
- **Hurst Exponent:** Real-time fractal dimension (0.000-1.000)
- **Information Flow:** Volume/price leading indicators
  - **📊 VOL:** Volume leading price (accumulation/distribution)
  - **💰 PRICE:** Price leading volume (momentum/speculation)
  - **➖ NONE:** Balanced information flow
- **Volatility Classification:**
  - **🔥 HIGH:** Above 1.5× jump threshold
  - **📊 NORM:** Normal volatility range
  - **😴 LOW:** Below 0.5× jump threshold
### Market Structure Section (Large Dashboard)
**Regime Classification:**
- **📈 TREND:** Hurst >0.6, momentum strategies optimal
- **🔄 REVERT:** Hurst <0.4, contrarian strategies optimal  
- **🎲 RANDOM:** Hurst ≈0.5, breakout strategies preferred
**Mathematical Field Analysis:**
- **Dimensions:** Current volatility space complexity (2D-5D)
- **Hawkes λ (Lambda):** Self-exciting jump intensity (0.00-1.00)
- **Jump Status:** 🚨 JUMP (active) / ✅ NORM (normal)
### Settings Summary Section (Large Dashboard)
**Active Configuration Display:**
- **Sensitivity:** Current master sensitivity setting
- **Lookback:** Primary analysis window
- **Theme:** Active color scheme
- **Method:** Hurst calculation method (Classic R/S, Adaptive R/S, DFA)
**Dashboard Sizing Options:**
- **Small:** Essential metrics only (mobile/small screens)
- **Normal:** Balanced information density (standard desktop)
- **Large:** Maximum detail (multi-monitor setups)
**Position Options:**
- **Top Right:** Standard placement (avoids price action)
- **Top Left:** Wide chart optimization
- **Bottom Right:** Recent price focus (scalping)
- **Bottom Left:** Maximum price visibility (swing trading)
---
## 🎯 SIGNAL GENERATION LOGIC
### Multi-Component Convergence System
**Component Signal Architecture:**
The TMAE generates signals through sophisticated component analysis rather than simple threshold crossing:
**Volatility Component:**
- **Jump Detection:** Mahalanobis distance threshold breach
- **Hawkes Intensity:** Self-exciting process activation (>0.2)
- **Multi-dimensional:** Considers all volatility dimensions simultaneously
**Hurst Regime Component:**
- **Trending Markets:** Price above SMA-20 with positive momentum
- **Mean-Reverting Markets:** Price at Bollinger Band extremes
- **Random Markets:** Bollinger squeeze breakouts with directional confirmation
**Transfer Entropy Component:**
- **Volume Leadership:** Information flow from volume to price
- **Volume Spike:** Volume 110%+ above 20-period average
- **Flow Significance:** Above entropy threshold with directional bias
### Democratic Signal Weighting
**Signal Mode Implementation:**
- **Aggressive Mode:** Any single component triggers signal
- **Confluence Mode:** Minimum 2 components must agree
- **Conservative Mode:** All 3 components must align
**Momentum Confirmation:**
All signals require momentum confirmation:
- **Long Signals:** RSI >50 AND price >EMA-9
- **Short Signals:** RSI <50 AND price 0.6):**
- **Increase Sensitivity:** Catch momentum continuation
- **Lower Mean Reversion Threshold:** Avoid counter-trend signals
- **Emphasize Volume Leadership:** Institutional accumulation/distribution
- **Tensor Field Focus:** Use expansion for trend continuation
- **Signal Mode:** Aggressive or Confluence for trend following
**Range-Bound Markets (Hurst <0.4):**
- **Decrease Sensitivity:** Avoid false breakouts
- **Lower Trending Threshold:** Quick regime recognition
- **Focus on Price Leadership:** Retail sentiment extremes
- **Fractal Grid Emphasis:** Support/resistance trading
- **Signal Mode:** Conservative for high-probability reversals
**Volatile Markets (High Jump Frequency):**
- **Increase Hawkes Decay:** Recognize event clustering
- **Higher Jump Threshold:** Avoid noise signals
- **Maximum Dimensions:** Capture full volatility complexity
- **Reduce Position Sizing:** Risk management adaptation
- **Enhanced Visuals:** Maximum information for rapid decisions
**Low Volatility Markets (Low Jump Frequency):**
- **Decrease Jump Threshold:** Capture subtle movements
- **Lower Hawkes Decay:** Treat moves as independent
- **Reduce Dimensions:** Simplify analysis
- **Increase Position Sizing:** Capitalize on compressed volatility
- **Minimal Visuals:** Reduce distraction in quiet markets
---
## 🚀 ADVANCED TRADING STRATEGIES
### The Mathematical Convergence Method
**Entry Protocol:**
1. **Fractal Grid Approach:** Monitor price approaching significant fractal levels
2. **Tensor Field Confirmation:** Verify field expansion supporting direction
3. **Portal Signal:** Wait for dimensional portal appearance
4. **ELITE/STRONG Quality:** Only trade highest quality mathematical signals
5. **Component Consensus:** Confirm 2+ components agree in Confluence mode
**Example Implementation:**
- Price approaching 21-period fractal high
- Tensor field expanding upward (bullish mathematical alignment)  
- Green portal appears below price (trending regime confirmation)
- ELITE quality signal with 3/3 components active
- Enter long position with stop below fractal level
**Risk Management:**
- **Stop Placement:** Below/above fractal level that generated signal
- **Position Sizing:** Based on Mahalanobis distance (higher distance = smaller size)
- **Profit Targets:** Next fractal level or tensor field resistance
### The Regime Transition Strategy
**Regime Change Detection:**
1. **Monitor Hurst Exponent:** Watch for persistent moves above/below thresholds
2. **Portal Color Change:** Regime transitions show different portal colors
3. **Background Intensity:** Increasing regime background intensity
4. **Mathematical Confirmation:** Wait for regime confirmation (hysteresis)
**Trading Implementation:**
- **Trending Transitions:** Trade momentum breakouts, follow trend
- **Mean Reversion Transitions:** Trade range boundaries, fade extremes
- **Random Transitions:** Trade breakouts with tight stops
**Advanced Techniques:**
- **Multi-Timeframe:** Confirm regime on higher timeframe
- **Early Entry:** Enter on regime transition rather than confirmation
- **Regime Strength:** Larger positions during strong regime signals
### The Information Flow Momentum Strategy
**Flow Detection Protocol:**
1. **Monitor Transfer Entropy:** Watch for significant information flow shifts
2. **Volume Leadership:** Strong edge when volume leads price
3. **Flow Acceleration:** Increasing flow strength indicates momentum
4. **Directional Confirmation:** Ensure flow aligns with intended trade direction
**Entry Signals:**
- **Volume → Price Flow:** Enter during accumulation/distribution phases
- **Price → Volume Flow:** Enter on momentum confirmation breaks
- **Flow Reversal:** Counter-trend entries when flow reverses
**Optimization:**
- **Scalping:** Use immediate flow detection (2-5 bar lag)
- **Swing Trading:** Use structural flow (10-20 bar lag)
- **Multi-Asset:** Compare flow between correlated assets
### The Tensor Field Expansion Strategy
**Field Mathematics:**
The tensor field expansion indicates mathematical pressure building in market structure:
**Expansion Phases:**
1. **Compression:** Field contracts, volatility decreases
2. **Tension Building:** Mathematical pressure accumulates
3. **Expansion:** Field expands rapidly with directional movement
4. **Resolution:** Field stabilizes at new equilibrium
**Trading Applications:**
- **Compression Trading:** Prepare for breakout during field contraction
- **Expansion Following:** Trade direction of field expansion
- **Reversion Trading:** Fade extreme field expansion
- **Multi-Dimensional:** Consider all field layers for confirmation
### The Hawkes Process Event Strategy
**Self-Exciting Jump Trading:**
Understanding that market shocks cluster and create follow-on opportunities:
**Jump Sequence Analysis:**
1. **Initial Jump:** First volatility jump detected
2. **Clustering Phase:** Hawkes intensity remains elevated
3. **Follow-On Opportunities:** Additional jumps more likely
4. **Decay Period:** Intensity gradually decreases
**Implementation:**
- **Jump Confirmation:** Wait for mathematical jump confirmation
- **Direction Assessment:** Use other components for direction
- **Clustering Trades:** Trade subsequent moves during high intensity
- **Decay Exit:** Exit positions as Hawkes intensity decays
### The Fractal Confluence System
**Multi-Timeframe Fractal Analysis:**
Combining fractal levels across different periods for high-probability zones:
**Confluence Zones:**
- **Double Confluence:** 2 fractal levels align
- **Triple Confluence:** 3+ fractal levels cluster
- **Mathematical Confirmation:** Tensor field supports the level
- **Information Flow:** Transfer entropy confirms direction
**Trading Protocol:**
1. **Identify Confluence:** Find 2+ fractal levels within 1 ATR
2. **Mathematical Support:** Verify tensor field alignment
3. **Signal Quality:** Wait for STRONG or ELITE signal
4. **Risk Definition:** Use fractal level for stop placement
5. **Profit Targeting:** Next major fractal confluence zone
---
## ⚠️ COMPREHENSIVE RISK MANAGEMENT
### Mathematical Position Sizing
**Mahalanobis Distance Integration:**
Position size should inversely correlate with mathematical field strength:
```
Position Size = Base Size × (Threshold / Mahalanobis Distance)
```
**Risk Scaling Matrix:**
- **Low Field Strength (<2.0):** Standard position sizing
- **Moderate Field Strength (2.0-3.0):** 75% position sizing  
- **High Field Strength (3.0-4.0):** 50% position sizing
- **Extreme Field Strength (>4.0):** 25% position sizing or no trade
### Signal Quality Risk Adjustment
**Quality-Based Position Sizing:**
- **ELITE Signals:** 100% of planned position size
- **STRONG Signals:** 75% of planned position size
- **GOOD Signals:** 50% of planned position size  
- **WEAK Signals:** No position or paper trading only
**Component Agreement Scaling:**
- **3/3 Components:** Full position size
- **2/3 Components:** 75% position size
- **1/3 Components:** 50% position size or skip trade
### Regime-Adaptive Risk Management
**Trending Market Risk:**
- **Wider Stops:** Allow for trend continuation
- **Trend Following:** Trade with regime direction
- **Higher Position Size:** Trend probability advantage
- **Momentum Stops:** Trail stops based on momentum indicators
**Mean-Reverting Market Risk:**
- **Tighter Stops:** Quick exits on trend continuation
- **Contrarian Positioning:** Trade against extremes  
- **Smaller Position Size:** Higher reversal failure rate
- **Level-Based Stops:** Use fractal levels for stops
**Random Market Risk:**
- **Breakout Focus:** Trade only clear breakouts
- **Tight Initial Stops:** Quick exit if breakout fails
- **Reduced Frequency:** Skip marginal setups
- **Range-Based Targets:** Profit targets at range boundaries
### Volatility-Adaptive Risk Controls
**High Volatility Periods:**
- **Reduced Position Size:** Account for wider price swings
- **Wider Stops:** Avoid noise-based exits
- **Lower Frequency:** Skip marginal setups
- **Faster Exits:** Take profits more quickly
**Low Volatility Periods:**
- **Standard Position Size:** Normal risk parameters
- **Tighter Stops:** Take advantage of compressed ranges
- **Higher Frequency:** Trade more setups
- **Extended Targets:** Allow for compressed volatility expansion
### Multi-Timeframe Risk Alignment
**Higher Timeframe Trend:**
- **With Trend:** Standard or increased position size
- **Against Trend:** Reduced position size or skip
- **Neutral Trend:** Standard position size with tight management
**Risk Hierarchy:**
1. **Primary:** Current timeframe signal quality
2. **Secondary:** Higher timeframe trend alignment  
3. **Tertiary:** Mathematical field strength
4. **Quaternary:** Market regime classification
---
## 📚 EDUCATIONAL VALUE AND MATHEMATICAL CONCEPTS
### Advanced Mathematical Concepts
**Tensor Analysis in Markets:**
The TMAE introduces traders to tensor analysis, a branch of mathematics typically reserved for physics and advanced engineering. Tensors provide a framework for understanding multi-dimensional market relationships that scalar and vector analysis cannot capture.
**Information Theory Applications:**
Transfer entropy implementation teaches traders about information flow in markets, a concept from information theory that quantifies directional causality between variables. This provides intuition about market microstructure and participant behavior.
**Fractal Geometry in Trading:**
The Hurst exponent calculation exposes traders to fractal geometry concepts, helping understand that markets exhibit self-similar patterns across multiple timeframes. This mathematical insight transforms how traders view market structure.
**Stochastic Process Theory:**
The Hawkes process implementation introduces concepts from stochastic process theory, specifically self-exciting point processes. This provides mathematical framework for understanding why market events cluster and exhibit memory effects.
### Learning Progressive Complexity
**Beginner Mathematical Concepts:**
- **Volatility Dimensions:** Understanding multi-dimensional analysis
- **Regime Classification:** Learning market personality types
- **Signal Democracy:** Algorithmic consensus building
- **Visual Mathematics:** Interpreting mathematical concepts visually
**Intermediate Mathematical Applications:**
- **Mahalanobis Distance:** Statistical distance in multi-dimensional space
- **Rescaled Range Analysis:** Fractal dimension measurement
- **Information Entropy:** Quantifying uncertainty and causality
- **Field Theory:** Understanding mathematical fields in market context
**Advanced Mathematical Integration:**
- **Tensor Field Dynamics:** Multi-dimensional market force analysis
- **Stochastic Self-Excitation:** Event clustering and memory effects
- **Categorical Composition:** Mathematical signal combination theory
- **Topological Market Analysis:** Understanding market shape and connectivity
### Practical Mathematical Intuition
**Developing Market Mathematics Intuition:**
The TMAE serves as a bridge between abstract mathematical concepts and practical trading applications. Traders develop intuitive understanding of:
- **How markets exhibit mathematical structure beneath apparent randomness**
- **Why multi-dimensional analysis reveals patterns invisible to single-variable approaches**
- **How information flows through markets in measurable, predictable ways**
- **Why mathematical models provide probabilistic edges rather than certainties**
---
## 🔬 IMPLEMENTATION AND OPTIMIZATION
### Getting Started Protocol
**Phase 1: Observation (Week 1)**
1. **Apply with defaults:** Use standard settings on your primary trading timeframe
2. **Study visual elements:** Learn to interpret tensor fields, portals, and streams
3. **Monitor dashboard:** Observe how metrics change with market conditions
4. **No trading:** Focus entirely on pattern recognition and understanding
**Phase 2: Pattern Recognition (Week 2-3)**
1. **Identify signal patterns:** Note what market conditions produce different signal qualities
2. **Regime correlation:** Observe how Hurst regimes affect signal performance  
3. **Visual confirmation:** Learn to read tensor field expansion and portal signals
4. **Component analysis:** Understand which components drive signals in different markets
**Phase 3: Parameter Optimization (Week 4-5)**
1. **Asset-specific tuning:** Adjust parameters for your specific trading instrument
2. **Timeframe optimization:** Fine-tune for your preferred trading timeframe
3. **Sensitivity adjustment:** Balance signal frequency with quality
4. **Visual customization:** Optimize colors and intensity for your trading environment
**Phase 4: Live Implementation (Week 6+)**
1. **Paper trading:** Test signals with hypothetical trades
2. **Small position sizing:** Begin with minimal risk during learning phase
3. **Performance tracking:** Monitor actual vs. expected signal performance
4. **Continuous optimization:** Refine settings based on real performance data
### Performance Monitoring System
**Signal Quality Tracking:**
- **ELITE Signal Win Rate:** Track highest quality signals separately
- **Component Performance:** Monitor which components provide best signals
- **Regime Performance:** Analyze performance across different market regimes
- **Timeframe Analysis:** Compare performance across different session times
**Mathematical Metric Correlation:**
- **Field Strength vs. Performance:** Higher field strength should correlate with better performance
- **Component Agreement vs. Win Rate:** More component agreement should improve win rates
- **Regime Alignment vs. Success:** Trading with mathematical regime should outperform
### Continuous Optimization Process
**Monthly Review Protocol:**
1. **Performance Analysis:** Review win rates, profit factors, and maximum drawdown
2. **Parameter Assessment:** Evaluate if current settings remain optimal
3. **Market Adaptation:** Adjust for changes in market character or volatility
4. **Component Weighting:** Consider if certain components should receive more/less emphasis
**Quarterly Deep Analysis:**
1. **Mathematical Model Validation:** Verify that mathematical relationships remain valid
2. **Regime Distribution:** Analyze time spent in different market regimes
3. **Signal Evolution:** Track how signal characteristics change over time
4. **Correlation Analysis:** Monitor correlations between different mathematical components
---
## 🌟 UNIQUE INNOVATIONS AND CONTRIBUTIONS
### Revolutionary Mathematical Integration
**First-Ever Implementations:**
1. **Multi-Dimensional Volatility Tensor:** First indicator to implement true tensor analysis for market volatility
2. **Real-Time Hawkes Process:** First trading implementation of self-exciting point processes
3. **Transfer Entropy Trading Signals:** First practical application of information theory for trade generation
4. **Democratic Component Voting:** First algorithmic consensus system for signal generation
5. **Fractal-Projected Signal Quality:** First system to predict signal quality at future price levels
### Advanced Visualization Innovations
**Mathematical Visualization Breakthroughs:**
- **Tensor Field Radiation:** Visual representation of mathematical field energy
- **Dimensional Portal System:** Category theory visualization for regime transitions
- **Information Flow Streams:** Real-time visual display of market information transfer
- **Multi-Layer Fractal Grid:** Intelligent spacing and projection system
- **Regime Intensity Mapping:** Dynamic background showing mathematical regime strength
### Practical Trading Innovations
**Trading System Advances:**
- **Quality-Weighted Signal Generation:** Signals rated by mathematical confidence
- **Regime-Adaptive Strategy Selection:** Automatic strategy optimization based on market personality
- **Anti-Spam Signal Protection:** Mathematical prevention of signal clustering
- **Component Performance Tracking:** Real-time monitoring of algorithmic component success
- **Field-Strength Position Sizing:** Mathematical volatility integration for risk management
---
## ⚖️ RESPONSIBLE USAGE AND LIMITATIONS
### Mathematical Model Limitations
**Understanding Model Boundaries:**
While the TMAE implements sophisticated mathematical concepts, traders must understand fundamental limitations:
- **Markets Are Not Purely Mathematical:** Human psychology, news events, and fundamental factors create unpredictable elements
- **Past Performance Limitations:** Mathematical relationships that worked historically may not persist indefinitely
- **Model Risk:** Complex models can fail during unprecedented market conditions
- **Overfitting Potential:** Highly optimized parameters may not generalize to future market conditions
### Proper Implementation Guidelines
**Risk Management Requirements:**
- **Never Risk More Than 2% Per Trade:** Regardless of signal quality
- **Diversification Mandatory:** Don't rely solely on mathematical signals
- **Position Sizing Discipline:** Use mathematical field strength for sizing, not confidence
- **Stop Loss Non-Negotiable:** Every trade must have predefined risk parameters
**Realistic Expectations:**
- **Mathematical Edge, Not Certainty:** The indicator provides probabilistic advantages, not guaranteed outcomes
- **Learning Curve Required:** Complex mathematical concepts require time to master
- **Market Adaptation Necessary:** Parameters must evolve with changing market conditions
- **Continuous Education Important:** Understanding underlying mathematics improves application
### Ethical Trading Considerations
**Market Impact Awareness:**
- **Information Asymmetry:** Advanced mathematical analysis may provide advantages over other market participants
- **Position Size Responsibility:** Large positions based on mathematical signals can impact market structure
- **Sharing Knowledge:** Consider educational contributions to trading community
- **Fair Market Participation:** Use mathematical advantages responsibly within market framework
### Professional Development Path
**Skill Development Sequence:**
1. **Basic Mathematical Literacy:** Understand fundamental concepts before advanced application
2. **Risk Management Mastery:** Develop disciplined risk control before relying on complex signals
3. **Market Psychology Understanding:** Combine mathematical analysis with behavioral market insights
4. **Continuous Learning:** Stay updated on mathematical finance developments and market evolution
---
## 🔮 CONCLUSION
The Tensor Market Analysis Engine represents a quantum leap forward in technical analysis, successfully bridging the gap between advanced pure mathematics and practical trading applications. By integrating multi-dimensional volatility analysis, fractal market theory, and information flow dynamics, the TMAE reveals market structure invisible to conventional analysis while maintaining visual clarity and practical usability.
### Mathematical Innovation Legacy
This indicator establishes new paradigms in technical analysis:
- **Tensor analysis for market volatility understanding**
- **Stochastic self-excitation for event clustering prediction**  
- **Information theory for causality-based trade generation**
- **Democratic algorithmic consensus for signal quality enhancement**
- **Mathematical field visualization for intuitive market understanding**
### Practical Trading Revolution
Beyond mathematical innovation, the TMAE transforms practical trading:
- **Quality-rated signals replace binary buy/sell decisions**
- **Regime-adaptive strategies automatically optimize for market personality**
- **Multi-dimensional risk management integrates mathematical volatility measures**
- **Visual mathematical concepts make complex analysis immediately interpretable**
- **Educational value creates lasting improvement in trading understanding**
### Future-Proof Design
The mathematical foundations ensure lasting relevance:
- **Universal mathematical principles transcend market evolution**
- **Multi-dimensional analysis adapts to new market structures**
- **Regime detection automatically adjusts to changing market personalities**
- **Component democracy allows for future algorithmic additions**
- **Mathematical visualization scales with increasing market complexity**
### Commitment to Excellence
The TMAE represents more than an indicator—it embodies a philosophy of bringing rigorous mathematical analysis to trading while maintaining practical utility and visual elegance. Every component, from the multi-dimensional tensor fields to the democratic signal generation, reflects a commitment to mathematical accuracy, trading practicality, and educational value.
### Trading with Mathematical Precision
In an era where markets grow increasingly complex and computational, the TMAE provides traders with mathematical tools previously available only to institutional quantitative research teams. Yet unlike academic mathematical models, the TMAE translates complex concepts into intuitive visual representations and practical trading signals.
By combining the mathematical rigor of tensor analysis, the statistical power of multi-dimensional volatility modeling, and the information-theoretic insights of transfer entropy, traders gain unprecedented insight into market structure and dynamics.
### Final Perspective
Markets, like nature, exhibit profound mathematical beauty beneath apparent chaos. The Tensor Market Analysis Engine serves as a mathematical lens that reveals this hidden order, transforming how traders perceive and interact with market structure.
Through mathematical precision, visual elegance, and practical utility, the TMAE empowers traders to see beyond the noise and trade with the confidence that comes from understanding the mathematical principles governing market behavior.
Trade with mathematical insight. Trade with the power of tensors. Trade with the TMAE.
*"In mathematics, you don't understand things. You just get used to them." - John von Neumann*
*With the TMAE, mathematical market understanding becomes not just possible, but intuitive.*
— Dskyz, Trade with insight. Trade with anticipation.
Sessions [Plug&Play]This indicator automatically highlights the three major FX trading sessions—Asia, London, and New York—on your chart and, at the close of each session, draws right-extended horizontal rays at that session’s high and low. It’s designed to help you visually identify when price is trading within each session’s range and to quickly see where the highest and lowest prices occurred before the next major session begins.
Key Features:
Session Boxes
Draws a semi-transparent box around each session’s timeframe (Asia, London, New York) based on your local UTC offset.
Each box dynamically expands in real time: as new candles form during the session, the box’s top and bottom edges update to match the highest high and lowest low seen so far in that session.
When the session ends, the box remains on your chart, anchored to the exact candles that formed its boundaries.
High/Low Rays
As soon as a session closes (e.g., London session ends at 17:00 UTC+0 by default), two horizontal rays are drawn at that session’s final high and low.
These rays are “pinned” to the exact candles where the high/low occurred, so they stay in place when you scroll or zoom.
Each ray extends indefinitely to the right, providing a clear reference of the key supply/demand levels created during that session.
Session Labels
Optionally places a small “London,” “New York,” or “Asia” label at the top edge of each completed session’s box.
Labels are horizontally centered within the session’s box and use a contrasting, easy-to-read font color.
Customizable Appearance
Show/Hide Each Session: Toggle display of London, New York, and Asia sessions separately.
Time Ranges: By default, London is 08:00–17:00 (UTC), New York is 13:00–22:00 (UTC), and Asia is 00:00–07:00 (UTC). You can override each session’s start/end times using the “Time Range” picker.
Color & Opacity: Assign custom colors to each session. Choose a global “Dark,” “Medium,” or “Light” opacity preset to adjust box fill transparency and border shading.
Show/Hide Labels & Outlines: Turn the text labels and the box borders on or off independently.
UTC Offset Support
If your local broker feed or price data is not in UTC, simply adjust the “UTC Offset (+/–)” input. The indicator will recalculate session start/end times relative to your chosen offset.
How to Use:
Add the Indicator:
Open TradingView’s Pine Editor, paste in this script, and click “Add to Chart.”
By default, you’ll see three translucent boxes appear once each session begins (Asia, London, New York).
Watch in Real Time:
As soon as a session starts, its box will appear anchored to the first candle. The top and bottom of the box expand if new extremes occur.
When the session closes, the final box remains visible and two horizontal rays mark that session’s high and low.
Analyze Key Levels:
Use the high- and low-level rays to gauge session liquidity zones—areas where stop orders, breakouts, or reversals often occur.
For example, if London’s high is significantly above current price, it may act as resistance in the New York session.
Customize to Your Needs:
Toggle specific sessions on/off (e.g., if you only care about London and New York).
Change each session’s color to match your chart theme.
Adjust the “UTC Offset” so sessions align with your local time.
Disable labels or box borders if you prefer a cleaner look.
Inputs Overview:
Show London/New York/Asia Session (bool): Show or hide each session’s box and its high/low rays.
Time Range (session): Defines the start/end of each session in “HHMM–HHMM” (24h) format.
Colour (color): Custom color for each session’s box fill, border, and high/low rays.
Show Session Labels (bool): Toggle the “London,” “New York,” “Asia” text that appears at the top of each completed box.
Show Range Outline (bool): Toggle the box border (if off, only a translucent fill is drawn).
Opacity Preset (Dark/Medium/Light): Controls transparency of box fill and border.
UTC Offset (+/–) (int): Adjusts session times for different time zones (e.g., +1 for UTC+1).
Why It’s Useful:
Quickly Identify Session Activity: Visually distinguish when each major trading session is active, then compare price action across sessions.
Pinpoint High/Low Liquidity Levels: Drawn rays highlight where the market hit its extremes—critical zones for stop orders or breakout entries.
Multi-Timeframe Context: By seeing historical session boxes and rays, you can locate recurring supply/demand areas, overlap zones, or session re-tests.
Fully Automated Workflow: Once added to your chart, the script does all the work of tracking session boundaries and drawing high/low lines—no manual box or line drawing necessary.
Example Use Cases:
London Breakout Traders: See where London’s high/low formed, then wait for price to revisit those levels during the New York session.
Range Breakout Strategies: If price consolidates inside the London box, use the boxed extremes as immediate targets for breakout entries.
Intraday Liquidity Swings: During quieter hours, watch Asia’s high/low to identify potential support/resistance before London’s opening.
Overlap Zones: Compare London’s range with Asia’s range to find areas of confluence—high-probability reversal or continuation zones.
Previous Highs & Lows (Customizable)Previous Highs & Lows (Customizable) 
This Pine Script indicator displays horizontal lines and labels for high, low, and midpoint levels across multiple timeframes. The indicator plots levels from the following periods:
Today's session high, low, and midpoint
Yesterday's high, low, and midpoint
Current week's high, low, and midpoint
Last week's high, low, and midpoint
Last month's high, low, and midpoint
Last quarter's high, low, and midpoint
Last year's high, low, and midpoint
 Features 
Individual Controls: Each timeframe has separate toggles for showing/hiding high/low levels and midpoint levels.
Custom Colors: Independent color selection for lines and labels for each timeframe group.
Display Options:
Adjustable line width (1-5 pixels)
Variable label text size (tiny, small, normal, large, huge)
Configurable label offset positioning
Organization: Settings are grouped by timeframe in a logical sequence from most recent (today) to least recent (last year).
Display Logic: Lines span the current trading day only. Labels are positioned to the right of the price action. The indicator automatically removes previous drawings to prevent chart clutter.






















